Cucumber:在 scenarion_outline 中的所有示例之后如何 运行 After hook only once
Cucumber: How to run the After hook only once after all examples in scenarion_outline
我有一个 scenario_outline 用于测试网站的登录屏幕。
Scenario_outline:
Try to login
Verify login
Examples:
| User | Pass |
| user1 | pass1 |
| user2 | pass2 |
我希望能够在开始时启动网页,并在所有示例完成后关闭。
运行 Before hook 很简单
Before do
$start ||= false
if ! start
#start web page
$start = true
end
end
但是我如何 运行 我的 After hook 在所有场景完成后只执行一次?
After do
#close web page
end
上面的示例只是在第一个示例之后关闭了网页,导致其余示例失败。不幸的是,我不能在这里应用我用 Before
钩子所做的事情
其余测试失败的原因是您的 After 方法没有将全局设置回 false:
After do
#close web page
$start = false
end
我不相信有 AfterScenario 挂钩。但是在你的情况下,如果你想让浏览器打开整个场景大纲,我会考虑使用常规场景和黄瓜 table。将在每个测试用例中共享浏览器会话。
仅供参考:还有一个 at_exit 挂钩。它的目的是 运行 所有测试后的一些代码。
at_exit 做
#关闭网页
结束
https://github.com/cucumber/cucumber/wiki/Hooks#global-hooks
我有一个 scenario_outline 用于测试网站的登录屏幕。
Scenario_outline:
Try to login
Verify login
Examples:
| User | Pass |
| user1 | pass1 |
| user2 | pass2 |
我希望能够在开始时启动网页,并在所有示例完成后关闭。
运行 Before hook 很简单
Before do
$start ||= false
if ! start
#start web page
$start = true
end
end
但是我如何 运行 我的 After hook 在所有场景完成后只执行一次?
After do
#close web page
end
上面的示例只是在第一个示例之后关闭了网页,导致其余示例失败。不幸的是,我不能在这里应用我用 Before
钩子所做的事情
其余测试失败的原因是您的 After 方法没有将全局设置回 false:
After do
#close web page
$start = false
end
我不相信有 AfterScenario 挂钩。但是在你的情况下,如果你想让浏览器打开整个场景大纲,我会考虑使用常规场景和黄瓜 table。将在每个测试用例中共享浏览器会话。
仅供参考:还有一个 at_exit 挂钩。它的目的是 运行 所有测试后的一些代码。
at_exit 做 #关闭网页 结束
https://github.com/cucumber/cucumber/wiki/Hooks#global-hooks