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
一个特征由场景组成。它们可能/可能不包含描述、背景和一组标签。
一个特征文件的结构如下
特征的名称应该有一个对被测试的特征的描述。然而,冗长的描述并不是强制性的,添加描述只是为了消除特征名称中的歧义。
Background
增加一个背景是为了有一组步骤。它接近于一个场景。我们可以用 “背景 “为多个场景添加一个背景。它在一个特征的每个场景之前运行,但在钩子之前的执行之后。
背景通常用于执行前提条件,如登录场景或数据库连接,等等。
可以添加一个背景描述,以提高人类的可读性。一个背景在一个特征文件中只能出现一次,而且必须在场景或场景大纲之前声明。
背景不应该被用来创建一个复杂的状态(只有在无法避免的情况下)。这个部分应该是简短而真实的。另外,我们应该避免在一个特征文件中出现大量的场景。
带背景的特征文件
带背景关键词的特征文件如下-
场景
一个场景定义了一个正在测试的应用程序的Behave。它有一个标题来描述其目标。它的描述可以被添加以提高人类的可读性。
一个场景可以有多个步骤,以关键词Given, Then, When等开始。建议用一个场景来检查一个单一的特性或一个预期的结果。
带场景的特征文件
带有Scenario关键词的特征文件如下。
方案大纲
如果我们有一组类似的标准和结果要在一个场景中传递,就会用到场景大纲。一个场景大纲伴随着一个例子表,可以有多个例子表。
在例子表中的标题行之后的每一行,测试都会被执行一次。要测试的值由括号<>中的名称表示。这些名字应该与例子表的标题相匹配。
这有助于减少代码行数,因为它消除了重复的步骤,使我们的测试有序进行。
带有场景大纲的特征文件
带有Scenario Outline关键字的特征文件如下所示
例子
以下是一个带有情景大纲的特征文件的例子 −
同样的测试在不同的参数集下被执行。
Given
以关键词Given开始的步骤用于在用户与系统交互之前将系统置于一个熟悉的环境中(类似于一个前提条件)。建议不要在Given步骤中描述用户Behave。
可以为在数据库中设置配置、登录应用程序等添加一个Given步骤。
带有Given的特征文件
带有Given关键字的特征文件如下所示
当
一个以关键字When开始的步骤被用来添加用户要执行的基本任务。有了这个,就有了用户与系统的沟通,从而带来了系统状态的改变或对其他地方的影响。
带有When的特征文件
带有When关键字的特征文件如下
Then
以关键字Then开始的步骤用于获得预期的结果。在这个步骤中观察到的结果(最好是以输出的形式–消息、报告等)应该与业务场景和存在的特征文件相联系。
建议不要对数据库场景使用Then步骤,因为它基本上是用来描述一个对最终用户来说很明显的后果。
带有Then的特征文件
带有When关键字的特征文件如下
And, But
如果我们有多个Given, When, Then连续步骤,我们可以使用And和But步骤。它给用户带来更好的可读性。
带有多个连续的Then/Given步骤的特征文件
Behave中带有多个连续的Then/Given步骤的特征文件如下所示
没有多个Then/Given步骤的特征文件
没有多个Then/Given步骤的特征文件如下
步骤数据 – Table
一个步骤可以有一个与之相关的文本和数据表。我们可以在一个步骤中添加一个数据表。建议将表格数据缩进,并且每一行都必须有一个相等的列号。
一列数据应该用|符号分开。
带表的特征文件
带有表格关键字的特征文件如下所示
一个表可以通过上下文变量(在步骤函数中传递)中的 .table 属性被执行的 Python 代码访问。一个表是Table的一个实例。
表的实现逻辑
下面是Table中.table属性的实现逻辑-
步骤数据 – Text
在一个步骤之后,用””括起来的文本块将与该步骤相联系。这里,缩进被解析了。所有开头的空白将从文本中删除。另外,所有后继的行必须至少有一个作为起始行的最小空白。
一个文本可以通过上下文变量中的.text属性(在步骤函数中传递)被执行的Python代码访问。
带文本的特征文件
带文本关键字的特征文件如下所示
Tags
可以对特征文件的某个部分进行标记,这样Behave就可以只对特征文件的某个部分进行验证。一个场景、特征、场景概要只能被标记。
另外,用于一个特征的标签应被其所有的场景和场景大纲所继承。标签放在我们想标记的场景或特征之前。我们也可以在一行中使用多个标签,并以空格分隔。一个标签以@开头,后面是标签名称。
带标签的特征文件
带标签的特征文件的关键词如下。
标签有助于管理测试执行,根据标签排除/包括特定的场景或功能。