我正在编写一些BDD自动化测试,结合Cucumber和Serenity框架。在我的BDD测试中,我需要一些超时机制,这样如果Cucumber场景或Serenity中的一个步骤花费的时间太长,它就会超时,测试就会失败。
我在下面的链接中找到了一些信息:https://groups.google.com/forum/#!topic/cukes/QaPvVMnqDvE
因此,对于Cucumber来说,步骤定义中的以下设置似乎应该完成这项工作:
@When(value="^I request web authentication$", timeout=1000)
public myfunc(){
}对于宁静,我没有找到任何设置的超时,但我想这只是我还没有找到它。
然而,当我为黄瓜尝试timeout=xxx时,它似乎不起作用。即使myfunc()在我的测试中挂起很长时间,测试也没有停止,只是挂起。
有人知道这个timeout=xxx是否还有其他的设置吗?
另外,宁静本身也有类似的超时机制吗?
最后,我使用maven干净安装来驱动测试,也许我缺少一些maven设置才能工作?
任何提示都将不胜感激。
发布于 2016-02-19 11:11:25
“宁静超时”可以由以下属性处理:
webdriver.timeouts.implicitlywaitwebdriver.wait.for.timeoutserenity.timeout中还可以获得有关宁静超时的更多信息。
超时 https://github.com/serenity-bdd/serenity-documentation/blob/master/src/asciidoc/system-props.adoc
发布于 2016-02-16 14:55:51
与其直接使用Maven安装来驱动测试,不如使用Junit或TestNG与其一起进行测试。如果使用Junit,则可以按以下方式完成超时:
@Test(timeout = 20)
public void try() {
while(true);
}TestNG也以几乎相同的方式工作:
@Test(timeOut = 10000)
public void try() {
while(true);
}黄瓜具有与JUnit和TestNG兼容的依赖项。
您尝试过的Cucumber超时仅在以下情况下才能工作:
如@aslakhellesoy @这里所述
如果线程是不可中断的,超时将停止它们。… 如果线程没有响应中断(),我们将尝试在指定超时两倍之后停止()它。 这使用了不推荐的Thread.stop()方法,但是对于像Cucumber这样的测试工具,应该是可以的。 参343。
所以你得把超时时间缩短一半。
发布于 2019-04-04 13:03:46
或者,如果在每一步之后都需要延迟,则可以使用该属性:
Serenity.step.delay={时间(Ms)
https://stackoverflow.com/questions/35353027
复制相似问题