单个feature文件多场景测试如何清理首个场景新增的待办项
问题原因分析
你的场景校验逻辑本身没有错误,出现3个待办项的核心问题是测试隔离未生效 + 初始化步骤实现逻辑缺陷:
- 绝大多数BDD测试框架(包括你用的Cucumber)的设计默认要求不同
Scenario之间完全独立,前一个场景的运行残留数据不能影响后一个场景。你当前的测试没有做全局的场景前置清理,第一个场景跑完后,待办列表里已经残留了1条First todo item #1。 - 第二个场景的
Given I have a todo list containing步骤如果实现为直接往现有列表新增数据,而不是先清空再初始化,就会在残留的1条基础上再添加1条相同的待办,此时列表已经有2条待办,再执行新增Next todo item的操作,最终就会得到3条数据。
修复方案
你可以任选以下任意一种方案解决:
- 给测试套件加全局
@Before钩子,每个Scenario执行前强制清空待办列表,保证所有场景的初始运行环境完全干净。 - 调整
Given I have a todo list containing步骤的实现逻辑,执行初始化数据插入前,先清空当前待办列表,避免和前序场景的残留数据累加。
测试代码(逻辑无问题,修复实现后可直接复用)
Scenario: Add first item Given my todo list is empty When I add "First todo item #1" Then my todo list should contain: | First todo item #1| And the remaining item count should show "1 item left" Scenario: Add another item Given I have a todo list containing | First todo item #1 | When I add "Next todo item" Then my todo list should contain: | Next todo item | | First todo item #1 | And the remaining item count should show "2 items left"
内容的提问来源于stack exchange,提问作者user2201789
相关产品推荐
相关产品推荐

