Cucumber BDD如何实现随机数据输入及复用场景避免重复编码
最优实现方案
针对Gherkin风格的BDD测试场景,你可以用以下两种方案避免重复编写20个相似场景:
方案1:使用场景大纲(Scenario Outline)参数化
这是Gherkin原生支持的标准写法,不需要修改底层步骤定义代码,可读性最高,适合需要单独校验每个新增步骤结果的场景:
Scenario Outline: 按顺序添加条目并校验列表 Given 我有一个新的空列表 When 我依次添加如下条目直到 <最大序号> | 条目名称 | | Item <序号> | Then 列表应该包含如下内容,按新增倒序排列: | 条目列表 | | Item <序号> | | ... | Examples: | 最大序号 | | 1 | | 2 | | ... | | 20 |
如果要更精准匹配每次加新条目后校验全量列表的逻辑,也可以直接在示例表中列出预期的全量列表,适合不需要太细粒度步骤展示的场景:
Scenario Outline: 新增条目后校验全量列表 Given 我有一个新的空列表 When 我依次添加前 <当前序号> 个Item条目 Then 列表包含的内容为: <预期列表> Examples: | 当前序号 | 预期列表 | | 1 | | Item 1 | | | 2 | | Item 2 | | Item 1 | | | 3 | | Item 3 | | Item 2 | | Item 1 | | ... | 20 | | Item 20 | | Item 19 | ... | Item 2 | | Item 1 | |
方案2:步骤定义层做循环处理
如果不想在特性文件里写太多示例行,可以直接封装一个通用步骤,在对应的步骤实现代码里做20次循环添加+校验,特性文件只需要写1个场景即可:
Scenario: 连续添加20个条目并逐次校验 Given 我有一个新的空列表 When 我连续添加20个Item条目,每添加一个就校验当前列表内容符合倒序排列规则 Then 全部条目校验通过
两种方案对比
- 方案1优点:完全符合Gherkin的可读性要求,每个用例独立可追溯,失败时可以直接看到是第几个序号出问题,不需要改动步骤实现代码
- 方案2优点:特性文件代码量最小,后期调整条目数量只需要改一个数字即可,维护成本最低
内容的提问来源于stack exchange,提问作者user2201789
相关产品推荐
相关产品推荐

