Gherkin 语言:格式、语法和 Gherkin 测试 Cucumber
什么是 Gherkin 语言?
小黄瓜 是一种业务可读语言,可帮助您描述业务行为,而无需了解实施细节。它是一种领域特定语言,用于定义测试 Cucumber 格式。它使用通俗易懂的语言来描述用例,并允许用户从行为测试中删除逻辑细节。
Gherkin 语言中的文本可作为自动化测试的文档和骨架。Gherkin 格式基于 TreeTop 语法,该语法存在于 37 种以上的语言中。因此,您可以用 37 种以上的口语编写您的 gherkin。
此脚本有两个主要用途:
- 记录用户场景
- 编写自动化测试 (BDD)
为什么是 Gherkin?
下图可以很容易地解释 Gherkin 的必要性
在 Gherkin 之前
小黄瓜之后
小黄瓜语法
Gherkin 是一种面向行的语言,就像 YAML 一样, Python。每行称为 step,以 keyword 开头,以 stop 结尾。缩进使用制表符或空格。
在此脚本中,您可以随意添加注释,但注释应以 # 符号开头。它会在删除 Ghrekin 的关键字(如 given、when、then 等)后读取每一行。
典型的 Gherkin 步骤如下
Gherkin Scripts:将人类的因果概念与软件的输入/过程/输出概念联系起来。
小黄瓜语法
Feature: Title of the Scenario Given [Preconditions or Initial Context] When [Event or Trigger] Then [Expected output]
Gherkin 文档有一个扩展名 .feature,只是一个带有花哨扩展名的测试文件。 Cucumber 读取 Gherkin 文档并执行测试以验证软件是否按照 Gherkin 语法运行。
Gherkin 中使用的重要术语
- 专栏
- 背景
- EventXtra XNUMX大解决方案
- 特定
- 在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。
- 然后
- 和
- 但是,
- 情景大纲示例
命名约定用于功能名称。然而,在 Cucumber 关于名字。
专栏
该文件的扩展名应该是 .feature ,每个 feature 文件应该只有一个 feature 。 feature 关键字以 Feature: 开头,后面会写上空格和 feature 的名称。
EventXtra XNUMX大解决方案
每个功能文件可能有多个场景,每个场景以 Scenario: 开头,后跟场景名称。
背景
Background 关键字可帮助您为场景添加一些背景信息。它可以包含场景的一些步骤,但唯一的区别是它应该在每个场景之前运行。
特定
Given 关键字的使用是为了在用户开始与系统交互之前将系统置于熟悉的状态。但是,如果 Given 是在“前提条件”步骤中,则可以省略在 Given 步骤中编写用户交互。
语法:
Given
Given - a test step that defines the 'context Given I am on "/."
在规划婴儿食品行业的工艺要求时,安全性和可靠性是工艺设计中最重要的方面。
该步骤定义用户执行的操作。
语法:
When
A When - a test step that defines the 'action' performed When I perform "Sign In."
然后
使用“then”关键字是为了查看 结果 在 when 步骤中的操作之后。但是,您只能验证明显的变化。
语法:
Then
Then - test step that defines the 'outcome.' Then I should see "Welcome Tom."
但是
您可能有多个给定的“何时”或“则”。
语法:
But
A But - additional test step which defines the 'action' 'outcome.' But I should see "Welcome Tom."
And - additional test step that defines the 'action' performed And I write "EmailAddress" with "Tomjohn@gmail.com."
Given、When、Then 和 but 是测试步骤。您可以交替使用它们。解释器不会显示任何错误。但是,它们在读取时肯定没有任何“意义”。
Given The login page is opening When I input username, password and click the Login button Then I am on the Homepage
Gherkin 示例
例如1:
Feature: Login functionality of social networking site Facebook. Given: I am a facebook user. When: I enter username as username. And I enter the password as the password Then I should be redirected to the home page of facebook
上面提到的场景是用户登录的功能。
Gherkin 会分析步骤定义文件中写的每个步骤。因此,功能文件中给出的步骤与步骤定义文件应该匹配。
例如2:
Feature: User Authentication Background: Given the user is already registered to the website Scenario: Given the user is on the login page When the user inputs the correct email address And the user inputs the correct password And the user clicks the Login button Then the user should be authenticated And the user should be redirected to their dashboard And the user should be presented with a success message
使用 Gherkin 的最佳实践
- 每个场景都应该单独执行
- 每个功能都应该能够同时执行
- 步数信息应单独显示
- 将您的场景与您的需求联系起来
- 全面跟踪需求文档中应包含哪些场景
- 创建模块化且易于理解的步骤
- 尝试结合所有常见场景
Gherkin 的优点
- Gherkin 非常简单,非程序员也能理解
- 程序员可以用它作为开始测试的坚实基础
- 它使用户故事更容易消化
- 企业高管和开发人员可以轻松理解 Gherkin 脚本
- Gherkin 测试针对业务需求
- 功能规范的很大一部分以用户故事的形式写成
- 你不需要成为专家就能理解小 Gherkin 命令集
- Gherkin 测试用例将验收测试直接链接到自动化测试
- 编写测试用例的风格更容易在其他测试中重用代码
小黄瓜的缺点
- 它需要高水平的商业参与和合作
- 可能并非在所有情况下都能很好地发挥作用
- 编写不佳的测试很容易增加测试维护成本
总结
- Gherkin 是黄瓜规格的格式
- Gherkin 是一种面向行的语言,就像 YAML 一样, Python
- Gherkin Scripts 将人类的因果概念与软件的输入/过程和输出概念联系起来
- 特征、背景、场景、给定、何时、然后、但是是 Gherkin 中的重要用处
- 在 Gherkin 中,每个场景都应该单独执行
- Gherkin 最大的优点是足够简单,非程序员也能理解
- Gherkin 测试可能不适用于所有类型的场景