《Cucumber:行为驱动开发指南》——2.3 创建步骤定义

简介: 现在在fetures/step_definitions目录下创建一个名为calculator_steps.rb的文件,只要这是一个Ruby文件,Cucumber并不介意你给这个文件起什么名字,但这里我们给这个文件起的名字其实不错。

本节书摘来自异步社区《Cucumber:行为驱动开发指南》一书中的第2章,第2.3节,作者:【英】Matt Wynne , 【挪】Aslak Hellesy著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.3 创建步骤定义

先不要过多考虑之前Cucumber输出的代码片段是什么意思,我们先把这些代码复制并粘贴到一个Ruby文件中。和特性文件一样,Ruby期望在约定俗成的位置找到步骤定义:

$ mkdir features/step_definitions
现在在fetures/step_definitions目录下创建一个名为calculator_steps.rb的文件,只要这是一个Ruby文件,Cucumber并不介意你给这个文件起什么名字,但这里我们给这个文件起的名字其实不错。接着用编辑器打开该文件并粘贴下面的代码片段:

下载first_taste/02/features/step_definitions/calculator_steps.rb
Given /^the input "([^"]*)"$/ do |arg1|
 pending # express the regexp above with the code you wish you had
end

When /^the calculator is run$/ do
 pending # express the regexp above with the code you wish you had
end

Then /^the output should be "([^"]*)"$/ do |arg1|
 pending # express the regexp above with the code you wish you had
end

运行cucumber,它会告诉我们下一步做什么:

Feature: Adding

 Scenario: Add two numbers    
  Given the input "2+2"     
   TODO (Cucumber::Pending)
   ./features/step_definitions/calculator_steps.rb:2
   features/adding.feature:4
  When the calculator is run  
  Then the output should be "4" 

1 scenario (1 pending)
3 steps (2 skipped, 1 pending)
0m0.003s

场景已经从未定义(undefined)升级到了待定(pending)。这是个好消息,因为它说明Cucumber正在运行第一个步骤,不过在此过程中它撞上了我们复制并粘贴的那些步骤定义代码中的pending标记,pending的意思是告诉Cucumber这个场景还是一个正在进行中的工作。我们需要用真正的实现替换掉这个pending标记。

注意,Cucumber报告它跳过了另外两个步骤,只要遇到了失败的或者待定的步骤,Cucumber就会停止运行当前场景并跳过该场景剩余的步骤。

下面我们来实现第一个步骤定义。

相关文章
|
29天前
|
存储 缓存 算法
【Conan 入门教程】从零开始编写第一个自定义部署器
【Conan 入门教程】从零开始编写第一个自定义部署器
25 1
|
7月前
|
存储 JSON BI
一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤试读版
一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤试读版
45 0
|
11月前
|
JSON 测试技术 数据格式
2022/9/5开始第三版接口自动化(yaml用例)测试框架(记录搭建过程)(这个废弃了)
2022/9/5开始第三版接口自动化(yaml用例)测试框架(记录搭建过程)(这个废弃了)
|
jenkins 持续交付 Python
python接口自动化(十五)--参数关联接口(详解)
我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的Jenkins-Crumb,获取到这个Jenkins-Crumb,就可以通过传这个任务Jenkins-Crumb继续操作这个新建的任务。
432 0
python接口自动化(十五)--参数关联接口(详解)
|
数据安全/隐私保护 Python
python接口自动化(三十四)-封装与调用--函数和参数化(详解)
参数化的思维只需记住一点:不要写死,这样就便于维护,否则就会牵一发而动全身,一处修改导致处处修改,不便于维护。
1158 1
python接口自动化(三十四)-封装与调用--函数和参数化(详解)
|
测试技术 数据库 Python
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
大多数的初学者在使用 unittest 框架时候,不清楚用例的执行顺序到底是怎样的。对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行。虽然或许通过代码实现了,也是稀里糊涂的一知半解,这样还好,好歹自己鼓 捣出了,但是时间和效率并不是很高,下次遇到还是老样子。那么本篇通过最简单案例来给给为小伙伴详细讲解、演示一下 unittest 执行顺序。
214 0
python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
|
jenkins 测试技术 持续交付
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。
345 0
python接口自动化(三十五)-封装与调用--流程类接口关联(详解)
|
JSON jenkins 持续交付
python接口自动化(十六)--参数关联接口后传(详解)
大家对前边的自动化新建任务之后,接着对这个新建任务操作了解之后,希望带小伙伴进一步巩固胜利的果实,夯实基础。因此再在沙场实例演练一下博客园的相关接口。我们用自动化发随笔之后,要想接着对这篇随笔操作,不用说就需 要用参数关联了,发随笔之后会有一个随笔的 id,获取到这个 id,继续操作传这个随笔 id 就可以了(博客园的登录机制已经变了,不能用账号和密码登录了,这里用 cookie 登录)
176 1
python接口自动化(十六)--参数关联接口后传(详解)
|
测试技术 Python
python接口自动化(二十六)--批量执行用例 discover(详解)
我们在写用例的时候,单个脚本的用例好执行,那么多个脚本的时候,如何批量执行呢?这时候就需要用到 unittest 里面的 discover 方法来加载用例了。加载用例后,用 unittest 里面的 TextTestRunner 这里类的 run 方法去一次执行多个脚 本的用例。那么前边介绍那么多都是半道开始,半道出家,这篇就带大家从头到尾,一步一步给小伙伴们详细介绍一下。
220 0
python接口自动化(二十六)--批量执行用例 discover(详解)
|
jenkins 测试技术 持续交付
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)
上一篇已经给大家都介绍过了流程类接口关联,但是由于博客的登录机制改变,所以没有办法给小伙伴们实战演练一下,那么这篇就按照上一篇计划的用jenkins来给小伙伴们演示一下流程类接口的封装和调用,其实很简单,就是用上一篇和前边这篇传送门的代码稍稍修改即可。不知道你自己练习了么,如果练习了,可以看看和我有什么不同,没练习的看看自己思路和我有啥不一样。好了废话少说进入主题
177 0
python接口自动化(三十六)-封装与调用--流程类接口关联续集(详解)