Behave驱动发展 - 小Cucumber
Gherkin 是一种语言,用于编写功能、场景和步骤。Gherkin 的目的是帮助我们编写具体的需求。
要理解具体要求的含义,请考虑以下示例 -
应防止客户输入无效的信用卡详细信息。
如果客户输入的信用卡号长度不完全是 16 位数字,那么当他们尝试提交表单时,应该会重新显示错误消息,告知他们正确的位数。
后者没有歧义,可以避免错误,并且更易于测试。
Gherkin 旨在创建更具体的要求。在 Gherkin 中,上面的例子看起来像 -
特征
输入无效信用卡详细信息时的反馈特征定义
在用户测试中,我们看到很多人犯错误文档
背景适用于以下所有场景
鉴于我已经选择了要购买的商品,
我即将输入我的信用卡号码
场景- 信用卡号太短场景定义
当我输入长度小于 16 位的卡号时
所有其他细节都是正确的
我提交表格脚步
然后表格应该重新显示
我应该会看到一条消息,告知我正确的位数
Gherkin 格式和语法
Gherkin 文件是纯文本文件,扩展名为 .feature。每行非空白都必须以 Gherkin 关键字开头,后跟您喜欢的任何文本。关键词是 -
特征
设想
给定、何时、那么、并且、但是(步骤)
背景
场景概要
例子
“””(文档字符串)
| (数据表)
@(标签)
# (评论)
*
特征
Feature关键字用于描述软件功能,并对相关场景进行分组。功能具有三个基本元素 -
关键词——功能。
功能的名称,与功能关键字在同一行提供。
可选(但强烈推荐)的描述,可以跨越多行,即包含关键字“功能”的行与以“场景”、“背景”或“场景大纲”开头的行之间的所有文本。
除了名称和描述之外,功能还包含场景或场景轮廓的列表以及可选的背景。
通常,通过获取功能名称、将其转换为小写并用下划线替换空格来命名.feature文件。例如,
feedback_when_entering_invalid_credit_card_details.feature
为了识别系统中的功能,您可以使用所谓的“功能注入模板”。
描述
Gherkin 文档的某些部分不必以关键字开头。
在功能、场景、场景大纲或示例后面的行中,您可以编写任何您喜欢的内容,只要没有任何行以关键字开头即可。这是包含描述的方法。
设想
为了表达系统的Behave,您可以为每个功能附加一个或多个场景。通常每个功能会看到 5 到 20 个场景,以完全指定围绕该功能的所有Behave。
场景遵循以下模式 -
描述初始上下文
描述一个事件
描述预期结果
我们从上下文开始,描述操作,然后检查结果。这是通过步骤完成的。Gherkin 提供了三个关键字来描述每个上下文、操作和结果作为步骤。
给定- 建立上下文
何时- 执行操作
然后- 检查结果
这些关键字提供了场景的可读性。
例子
场景- 从帐户中提取资金。
鉴于我的帐户中有 100 美元。
当我要求 20 美元时。
那么应该发放 20 美元。
如果有多个彼此相邻的Give或When步骤,您可以使用And或But。它们允许您详细指定场景。
例子
场景- 尝试使用被盗的卡提款。
鉴于我的帐户中有 100 美元。
但我的卡无效。
当我要求 50 美元时。
那么我的卡就不应该被退回。
我应该被告知联系银行。
创建场景时,请记住“每个场景都必须有意义并且能够独立于任何其他场景执行”。这意味着 -
一个场景的成功条件不能依赖于在它之前执行过的其他场景的事实。
每个场景都会创建其特定的上下文,执行一件事并测试结果。
这种情况提供以下好处 -
测试将变得更简单、更容易理解。
您可以只运行场景的子集,而不必担心测试集的破坏。
根据您的系统,您也许能够并行运行测试,从而减少执行所有测试所需的时间。
场景概要
如果您必须编写具有多个输入或输出的场景,则最终可能会创建多个仅其值不同的场景。解决方案是使用场景大纲。要写出情景大纲,
场景大纲步骤中的变量用 < 和 > 标记。
变量的各种值在表中作为示例给出。
例子
假设您正在编写一个用于在计算器上添加两个数字的功能。
功能- 添加。
Scenario Outline: Add two numbers. Given the input "<input>" When the calculator is run Then the output should be <output>" Examples | input | output | | 2+2 | 4 | | 98+1 | 99 | | 255+390 | 645 |
场景大纲部分后面始终跟随一个或多个示例部分,这些示例是表格的容器。该表必须具有与场景大纲步骤中的变量相对应的标题行。下面的每一行都会创建一个新场景,填充变量值