gpt4 book ai didi

ruby - 如何强制 cucumber 方案失败?

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:13 26 4
gpt4 key购买 nike

有没有办法强制 cucumber 方案失败?

我需要在每次测试结束时检查一些失败的场景。所以我想我可以检查“错误”对话框,然后在出现错误时使测试失败。

下面的代码可以做到这一点,但是有一个问题。一旦我在失败中引发异常!函数,然后 Cucumber 停止运行 After Hook 的其余部分,因此不会调用注销函数。

是:

After() do |scenario|  
#Checking for Error popups
if page.has_selector?(:dialog_message, 1, :text => 'Error')
fail!(raise(ArgumentError.new('Unexpected Error dialog!')))
end
logout
end

现在:

After() do |scenario|  
#Checking for Error popups
if page.has_selector?(:dialog_message, 1, :text => 'Error')
scenario.fail!(logout)
end
end

有没有更好的方法让 cucumber 测试失败而不引发异常?

最佳答案

您可以使用常规断言使 after Hook 失败。没有对 Capybara/rspec 异常做太多,但我认为你可以做:

page.should have_selector?(:dialog_message, 1, :text => 'Error')

但是,如果您这样做或执行 scenario.fail!(),您仍然不会注销。您需要将其包装在 begin-ensure block 中。

试试这个:

After do |scenario|
begin
page.should have_selector?(:dialog_message, 1, :text => 'Error')
ensure
logout
end
end

更新

如果您不想调用标准断言并直接使场景失败,您可以执行以下操作 - 您需要使用 fail 而不是 fail!:

After() do |scenario|  
begin
#Checking for Error popups
if page.has_selector?(:dialog_message, 1, :text => 'Error')
fail(ArgumentError.new('Unexpected Error dialog!'))
#Or you can just do fail('Unexpected Error dialog') if you do not care about the type.
end
ensure
logout
end
end

关于ruby - 如何强制 cucumber 方案失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11797171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com