【问题标题】:Cucumber: How to run the After hook only once after all examples in scenarion_outlineCucumber:如何在场景大纲中的所有示例之后只运行一次 After 挂钩
【发布时间】:2015-04-26 07:17:16
【问题描述】:

我有一个测试网站登录屏幕的场景大纲。

Scenario_outline:
    Try to login
    Verify login

    Examples:
    | User  | Pass   |
    | user1 | pass1  |
    | user2 | pass2  |

如果完成所有示例,我希望能够在开头启动网页并关闭。

运行 Before 挂钩很容易

Before do
    $start ||= false
    if ! start
        #start web page
        $start = true
    end
end

但是如何在所有场景完成后只运行一次 After 挂钩?

After do
    #close web page
end

上面的例子只是在第一个例子之后关闭了网页,导致其余的失败。不幸的是,我不能在这里应用我对Before 钩子所做的事情

【问题讨论】:

    标签: ruby cucumber watir-webdriver


    【解决方案1】:

    其余测试失败的原因是您的 After 方法没有将全局设置为 false:

    After do
        #close web page
        $start = false
    end
    

    我不相信有 AfterScenario 钩子。但是在您的情况下,如果您希望浏览器为整个场景大纲打开,我会考虑使用常规的场景和黄瓜表。将在每个测试用例之间共享浏览器会话。

    仅供参考:还有一个 at_exit 钩子。它的目的是在所有测试之后运行一些代码。

    at_exit 做 #关闭网页 结束

    https://github.com/cucumber/cucumber/wiki/Hooks#global-hooks

    【讨论】:

    • 如果after 钩子再次将$start 设置为false,它将为每个示例打开一个浏览器实例,这正是我想要避免的。但是at_exit 钩子正是我需要的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多