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