Gherkin语言:语法、格式和示例
⚡ 智能摘要
Gherkin 是一种面向业务人员的易读语言,它描述软件行为而无需实现细节。它使用 Given、When 和 Then 关键字来定义…… Cucumber 用通俗易懂的语言编写的测试场景,既是动态文档,也是自动化 BDD 测试的框架。

什么是 Gherkin 语言?
小黄瓜 是一种业务可读的语言,可帮助您描述业务行为而无需深入了解实现细节。它是一种领域特定语言,用于定义测试。 Cucumber 它采用简洁易懂的语言描述用例,并允许用户从行为测试中移除逻辑细节。
Gherkin 文本既是文档,也是自动化测试的框架。Gherkin 格式基于 TreeTop 语法,该语法支持超过 37 种语言,因此您可以使用超过 37 种口语语言编写 Gherkin 代码。该脚本有两个主要用途:记录用户场景,并为编写自动化 BDD 测试提供基础。
为什么是 Gherkin?
如果没有统一的、通俗易懂的语言格式,业务团队和技术团队对需求的描述就会出现差异,从而导致误解。Gherkin 为所有人提供了一种统一的结构化词汇,它既像普通英语一样易读,又能直接映射到可执行的测试用例。
小黄瓜语法
Gherkin 是一种面向行的语言,就像 YAML 一样。 Python每一行称为一个步骤,以关键字开头。缩进使用制表符或空格。注释可以添加到任何位置,但必须以 # 号开头。解释器在读取每一行时,会先移除 Gherkin 关键字,例如 Given、When 和 Then。
Feature: Title of the Scenario Given [Preconditions or Initial Context] When [Event or Trigger] Then [Expected output]
Gherkin 文档的扩展名为 .feature,它只是一个带有描述性扩展名的测试文件。 Cucumber 读取 Gherkin 文档并执行测试以验证软件的行为是否符合 Gherkin 语法的描述。
小黄瓜中使用的重要术语
主要关键词有:特征、背景、场景、给定、当……时、然后、并且、但是、场景概述。 Cucumber 没有严格的命名规则,但清晰的命名规范会有所帮助。
特性
文件扩展名应为 .feature,每个 feature 文件只能描述一个 feature。feature 关键字以 开头。 特征: 然后是一个空格,再是功能名称。
EventXtra XNUMX大解决方案
每个功能文件可能包含多个场景,每个场景都以……开头。 场景: 然后是场景名称。
背景
“背景”关键字为场景添加上下文。它可以包含所有场景共享的步骤;区别在于这些步骤在每个场景之前运行。
特定
Given 关键字在用户开始与系统交互之前,将系统置于一个已知状态。它定义了前提条件或上下文:
Given I am on "/."
日期
When 关键字定义了用户执行的操作:
When I perform "Sign In."
然后
Then 关键字定义了在 When 步骤中执行操作后观察到的结果。您只需验证可察觉的变化:
Then I should see "Welcome Tom."
但是
你可能需要多个 Given、When 或 Then 步骤。And 和 But 关键字可以添加额外的步骤,以提高可读性:
And I enter "EmailAddress" with "tomjohn@gmail.com." But I should see "Welcome Tom."
Given、When、Then、And 和 But 都是测试步骤。如果将它们互换,解释器不会报错,但语句会变得不通顺,所以请确保每个关键字都用于其预期用途。
Gherkin 示例
例如1: 社交网站的登录功能。
Feature: Login functionality of a social networking site Given I am a registered user When I enter my username And I enter my password Then I should be redirected to the home page
Gherkin 会分析功能文件中编写的每个步骤,并且功能文件中的步骤必须与步骤定义文件中的步骤相匹配。
例如2: 带有背景的用户身份验证场景。
Feature: User Authentication Background: Given the user is already registered on the website Scenario: Successful login 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
使用 Gherkin 的最佳实践
- 每个场景都应该单独独立执行。
- 每个功能都应该能够独立执行。
- 步骤信息应单独显示。
- 将您的场景与您的需求联系起来 track 哪些场景属于每个需求。
- 创建模块化、易于理解的步骤,并将常见场景结合起来。
- 描述系统的功能,而不是它的工作原理。
Gherkin 的优点
- Gherkin 语言足够简单,非程序员也能理解。
- 程序员可以将其作为开展测试的坚实基础。
- 它使用户故事更容易理解,并针对业务需求。
- 企业高管和开发人员都可以阅读同一份脚本。
- Gherkin 测试用例直接将验收测试与自动化测试关联起来。
- 这种编写风格使得在不同测试中重复使用代码更加容易。
小黄瓜的缺点
- 这需要高度的业务参与和协作。
- 它并非在所有情况下都能很好地发挥作用。
- 编写不佳的测试会增加测试维护成本。
