- Behave 教程
- Behave - 首页
- Behave - 简介
- Behave - 安装
- Behave - 命令行
- Behave - 配置文件
- Behave - 特性测试设置
- Behave - Gherkin 关键字
- Behave - 特性文件
- Behave - 步骤实现
- Behave - 初级步骤
- Behave - 支持的语言
- Behave - 步骤参数
- Behave - 场景大纲
- Behave - 多行文本
- Behave - 设置表格
- Behave - 步骤中的步骤
- Behave - 背景
- Behave - 数据类型
- Behave - 标签
- Behave - 枚举
- Behave - 步骤匹配器
- Behave - 正则表达式
- Behave - 可选部分
- Behave - 多方法
- Behave - 步骤函数
- Behave - 步骤参数
- Behave - 运行脚本
- Behave - 排除测试
- Behave - 重试机制
- Behave - 报告
- Behave - 钩子
- Behave - 调试
- Behave 有用资源
- Behave - 快速指南
- Behave - 有用资源
- Behave - 讨论
Behave - Gherkin 关键字
以下是 Behave 中的 Gherkin 关键字:
特性 (Features)
场景 (Scenario)
步骤 (Steps)
背景 (Background)
场景大纲 (Scenario Outline)
文本 (Text)
表格 (Table)
标签 (Tags)
假如 (Given)
当 (When)
那么 (Then)
但是 (But)
并且 (And)
特性文件是用 Gherkin 语言编写的。它是纯文本,由团队的非技术成员(业务分析师)创建。特性文件可用于自动化测试和文档。
Behave 包含行尾结束语句。我们可以使用制表符/空格进行缩进。大多数行以关键字开头,例如 Scenario、Given、Then 等。可以在文件的任何位置添加注释。它们以空格开头/不以空格开头,后跟 # 符号以及文本。
让我们讨论一些关键的 Gherkin 关键字。
特性 (Feature)
一个特性包含多个场景。它们可能包含/不包含描述、背景和一组标签。
特性文件的结构如下:
Feature − Verify book name added in Library Scenario − Verify Book name Given Book details Then Verify book name
特性的名称应该对正在测试的特性进行描述。但是,冗长的描述不是强制性的,只在特性名称不明确时才添加描述。
背景 (Background)
添加背景是为了拥有一组步骤。它类似于一个场景。我们可以使用背景为多个场景添加上下文。它在特性中每个场景之前运行,但在运行 before 钩子之后。
背景通常用于执行前提条件,例如登录场景或数据库连接等。
可以添加背景描述以提高人类可读性。背景在一个特性文件中只能出现一次,并且必须在场景或场景大纲之前声明。
不应使用背景来创建复杂状态(除非无法避免)。此部分应简短且准确。此外,我们应避免在一个特性文件中包含大量场景。
包含背景的特性文件
包含 Background 关键字的特性文件如下:
Feature: Payment Process
Background:
Given launch application
Then Input credentials
Scenario: Credit card transaction
Given user is on credit card payment screen
Then user should be able to complete credit card payment
Scenario: Debit card transaction
Given user is on debit card payment screen
Then user should be able to complete debit card payment
场景 (Scenario)
场景定义了正在测试的应用程序的行为。它有一个标题来描述其目标。可以添加其描述以提高人类可读性。
场景可能有多个步骤,这些步骤以关键字 Given、Then、When 等开头。建议使用场景来检查单个特性或预期结果。
包含场景的特性文件
包含 Scenario 关键字的特性文件如下:
Feature − Payment Process
Scenario − Credit card transaction
Given user is on credit card payment screen
Then user should be able to complete credit card payment
场景大纲 (Scenario Outline)
如果我们有一组类似的标准和要在场景中传递的结果,则使用场景大纲。场景大纲附带一个示例表格,并且可以有多个示例表格。
对于示例表中标题行后的每一行,测试都会执行一次。要测试的值由括号 <> 中的名称表示。这些名称应与示例表标题匹配。
它有助于减少代码行数,因为它消除了重复的步骤并整理了我们的测试。
包含场景大纲的特性文件
包含 Scenario Outline 关键字的特性文件如下:
Feature − User information Scenario Outline: Check login functionality Given user enters <email> and <password> Then user should be logged in
示例
以下是包含 Scenario Outline 的特性文件的示例:
Examples: Credentials | email | password | | qa@gmail.com | pwd1 | | qe@gmail.com | pwd2 |
相同的测试将使用不同的参数集执行。
假如 (Given)
以关键字 Given 开头的步骤用于在用户与系统交互之前将系统置于熟悉的环境中(类似于前提条件)。建议不要在 Given 步骤中描述用户操作。
可以添加 Given 步骤来设置数据库中的配置、登录应用程序等。
包含 Given 的特性文件
包含 Given 关键字的特性文件如下:
Feature − Payment Process
Scenario − Credit card transaction
Given user is on credit card payment screen
Then user should be able to complete credit card payment
当 (When)
以关键字 When 开头的步骤用于添加用户要执行的基本任务。通过此步骤,用户与系统进行交互,从而导致系统状态发生变化或对其他地方产生影响。
包含 When 的特性文件
包含 When 关键字的特性文件如下:
Feature − Payment Process
Scenario − Credit card transaction
Given user is on credit card payment screen
When user clicks on the Payment with Credit Card button
Then user should be able to complete credit card payment
那么 (Then)
以关键字 Then 开头的步骤用于获取预期结果。此步骤中观察到的结果(理想情况下以输出形式 - 消息、报告等)应与业务场景和它所在的特性文件相关联。
建议不要将 Then 步骤用于数据库场景,因为它主要用于描述最终用户可见的后果。
包含 Then 的特性文件
包含 When 关键字的特性文件如下:
Feature − Payment Process
Scenario − Credit card transaction
Given user is on credit card payment screen
When user clicks on the Payment with Credit Card button
Then user should be able to complete credit card payment
And、But
如果我们有多个连续的 Given、When、Then 步骤,我们可以使用 And 和 But 步骤。它提高了用户的可读性。
包含多个连续 Then/Given 步骤的特性文件
Behave 中包含多个连续 Then/Given 步骤的特性文件如下:
Feature − Verify book names added in Library
Scenario − Verify Book name
Given Book1 details
Given Book2 details
Then Verify book names
Then Verify newly added book names should not be in Delete History
不包含多个 Then/Given 步骤的特性文件
不包含多个 Then/Given 步骤的特性文件如下:
Feature − Verify book names added in Library
Scenario − Verify Book name
Given Book1 details
And Book2 details
Then Verify book names
But Verify newly added book names should not be in Delete History
步骤数据 - 表格
步骤可以具有与其关联的文本和数据表。我们可以向步骤添加数据表。建议缩进表格数据,并且必须为每一行设置相等的列数。
列数据应以 | 符号分隔。
包含表格的特性文件
包含 table 关键字的特性文件如下:
Feature − User Registration
Scenario − User enters registration details
When User enters name and password
| name |password |
| t1 | pwd |
| t2 | pwd1 |
Then user should be able to complete registration
表格可通过上下文变量 (传递到步骤函数) 中的 .table 属性访问实现 Python 代码。表格是 Table 的一个实例。
表格的实现逻辑
以下是 Table 中 .table 属性的实现逻辑:
@when('User enters name and password')
def step_impl(context):
for r in context.table:
model.delete_usr(name=r['name'], password=r['password'])
步骤数据 - 文本
步骤后用 """ 括起来的文本块将与该步骤链接。此处,将解析缩进。开头的所有空格都将从文本中删除。此外,所有后续行必须至少具有与起始行相同的最小空格。
文本可通过上下文变量 (传递到步骤函数) 中的 .text 属性访问实现 Python 代码。
包含文本的特性文件
包含 text 关键字的特性文件如下:
Feature − Verify book name added in Library
Scenario − Verify Book name
Given Book details
"""
Text added for a step
"""
Then Verify book name
标签 (Tags)
可以为特性文件的某个部分添加标签,以便 Behave 能够仅验证特性文件的特定部分。只能为场景、特性、场景大纲添加标签。
此外,用于特性的标签将由其所有场景和场景大纲继承。标签放在我们想要标记的场景或特性之前。我们也可以在一行中用空格分隔多个标签。标签以 @ 开头,后跟标签名称。
包含标签的特性文件
包含 tags 关键字的特性文件如下:
@payment
@high
Feature − Payment Process
Scenario − Credit card transaction
Given user is on credit card payment screen
Then user should be able to complete credit card payment
标签通过根据标签排除/包含特定场景或特性来帮助管理测试执行。