Gherkin简单使用

Gherkin简单使用Gherkin 简单使用 1 Gherkin 简介 Cucumber 是一个解释程序 就像 ruby 命令执行解释 rb 文件里的 Ruby 代码一样 Cucumber 用来执行解释 feature 文件里的 Gehrkin 代码 2 关键字 当你编写一个 feature 文件的时候 会用到很多 Gherkin 语言里特定的关键字 主要包括下这面些 Feature Background Scenari

Gherkin简单使用

1. Gherkin简介:

Cucumber是一个解释程序,就像ruby命令执行解释 .rb文件里的Ruby代码一样,Cucumber用来执行解释 .feature文件里的Gehrkin代码。

2. 关键字:

当你编写一个feature文件的时候,会用到很多Gherkin语言里特定的关键字,主要包括下这面些:

• Feature

• Background

• Scenario

• Scenario outline

• Scenarios (or examples)

• Given

• When

• Then

• And (or but)

• | (用来定义表格)

• “”” (定义多行字符串)

• # (注释)

 Feature: Book flight In order to book a flight As a user I want to find the cheapest flight 

当然有一点需要指出的是,Cucumber并不关心你在这里写了什么。它只是简单的忽略这些代码直到它碰到关键字Background, Scenario 和 Scenario Outline. 我们写这些的目的仅仅是为了沟通和交流。

3. Scenarios/Steps/The cucumber Command

1. Scenario:一个feature文件里面可以有很多个Scenario,一个Scenario就是一个具体的你想要测试的功能点,一个Scenario又是由很多个步骤(Steps)组成的。Scenario明确的描述我们期望的程序的行为,且方便不同职位的人员进行沟通,因为你只要看到一个Scenario,很容易就知道它想做什么。

一个Scenario的第一部分是Scenario关键字后面紧跟一个冒号和一个对应该场景的描述。如下:

 Feature: Book flight In order to book a flight As a user I want to find the cheapest flight Scenario: Successful booking flight 

2. Steps:每个Scenario都可以使用任意数量的步骤来描述任何发生在该场景里的事情,一个步骤通常是一行单独的文本并且由以下这些关键字开头:Given,When,Then,And and But. 如下:(注意:步骤后面不需要跟冒号)

 Feature: Book flight In order to book a flight As a user I want to find the cheapest flight Scenario: Successful booking flight Given I visit a website to book flight 

3. The cucumber Command: 一旦我们写好了一个feature文件,我们就可以使用 cucumber 命令来运行它。如果cucumber命令后不跟任何东西的话,那么它会执行所有的.feature文件。如果我们只想运行某一个.feature文件,我们可以使用命令cucumber features\feature_name

4.Given/When/Then/And/But

  • Given: 表示scenario中我们接受/认为是真的东西,它将为后面的when(事件/操作)和Then(输出)提供背景/上下文;如:Given I visit a website
  • When: 表示scenario中的事件或动作;如:When I click the submit button.; 一般我们喜欢在一个scenario中只有一个事件或动作,因为这样容易理解scenario的目的且容易找到错误当失败的时候;
  • Then: 表示预期的输出;
  • And/ But: 我们可以使用And 和 But 作为Given/When/Then的同义词,如:”Given x, And y,” 这里的And就是Given的意思;再如:”Then x, But not y,” 这里的But就是Then的意思;

例:

Scenario: transfer money (declarative)   Given I have $100 inchecking   And I have $20 insavings   When I transfer $15 from checking to savings   Then I should have $85 inchecking   And I should have $35 insavings 

5.Tags:

正如前面提到的一个.feature 文件里面可以有很多scenario组成。如果我们运行了一个包含有很多个scenario的feature文件时,它会执行这个文件里面所有的scenario;但是有的时候我们可能只想运行某一个/些特别的scenario时,这时我们可以使用Tags;

在Cucumber里Tag看上去和Ruby的实例变量比较像。如@wip, @foo…可以在Feature或Scenario关键字前给feature或scenario添加任意数量的tags,如:

   @approved @book_flight   Feature: Book flight   @wip   Scenario: Book a flight on web 

一个Scenario会继承指定给Feature的tags,所以在上面的例子中,Scenario有三个tags:@approved @book_flight @wip. 然后我们就可以使用命令:

cucumber --tags tag_name 
cucumber –tags @wip 
cucumber –tags @foo,@bar 

2.@foo && @bar 运行所有包含@foo AND @bar的scenarios

cucumber --tags @foo --tags @bar 

3.运行所有不包含@dev的scenario

cucumber --tags ~@dev 

4.(@foo || !@bar) && @baz

cucumber --tags @foo,~@bar --tags @baz 

注:本文内容来自《The RSpec Book》一书,本人只做记录,水平有限,如果需要可查看原版图书。

转自:https://www.cnblogs.com/puresoul/archive/2011/12/28/2305160.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200986.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:11
下一篇 2026年3月20日 上午10:11


相关推荐

  • JAVA协同过滤推荐算法

    1、什么是协同过滤在推荐系统众多方法中,基于用户的协同过滤推荐算法是最早诞生的,原理也较为简单。该算法1992年提出并用于邮件过滤系统,两年后1994年被GroupLens用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。…

    2022年4月7日
    56
  • 豆包设置权限怎么打开

    豆包设置权限怎么打开

    2026年3月12日
    4
  • 关于.gitignore不起作用「建议收藏」

    关于.gitignore不起作用「建议收藏」由于公司和家里的as版本不同,倒腾了好久,但是代码到本地后build.gradle等文件做了修改,为了不影响公司版本,故家里的需要忽略这些文件的修改,想到的就是加gitignore配置,直接添加不起效果,找到如下办法:有时我们发现添加.gitignore文件后并没有忽略我们想要忽略的文件,解决方法就是清除一下缓存,原因gitignore对已经追踪(track)的文件无效,清除缓存后文件将以未追

    2022年10月21日
    5
  • C# Lock 解读

    C# Lock 解读

    2021年8月15日
    58
  • webhook php 安全 权限,WebHook

    webhook php 安全 权限,WebHook用户下单或退款后会发送一条请求到服务的 WebHook 地址 会尝试 3 次 直到返回的状态码为 200 gt danger 如果希望通过接口自动处理用户订单 请根据下面的规范开发每个上架产品或服务的 WebHook 接口 并告知市场服务专员为您设置并进行对接测试 请求类型为 POST 请求的头部包含 X ThinkPHP Event service 请求的数

    2026年3月19日
    2
  • linux文件系统添加pcm,Linux音频驱动之三:PCM设备的创建

    linux文件系统添加pcm,Linux音频驱动之三:PCM设备的创建转载 http blog csdn net DroidPhone archive 2011 04 07 aspx 作者 CSDN 1 PCM 是什么 PCM 是英文 Pulse codemodulati 的缩写 中文译名是脉冲编码调制 我们知道在现实生活中 人耳听到的声音是模拟信号 PCM 就是要把声音从模拟转换成数字信号的一种技术 他的原理简单地说就是利用一个固定的频率对模拟信号进行

    2026年3月17日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号