首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >宁静BDD或Cucumber BDD框架的超时设置?

宁静BDD或Cucumber BDD框架的超时设置?
EN

Stack Overflow用户
提问于 2016-02-12 01:01:06
回答 3查看 7.3K关注 0票数 1

我正在编写一些BDD自动化测试,结合Cucumber和Serenity框架。在我的BDD测试中,我需要一些超时机制,这样如果Cucumber场景或Serenity中的一个步骤花费的时间太长,它就会超时,测试就会失败。

我在下面的链接中找到了一些信息:https://groups.google.com/forum/#!topic/cukes/QaPvVMnqDvE

因此,对于Cucumber来说,步骤定义中的以下设置似乎应该完成这项工作:

代码语言:javascript
复制
@When(value="^I request web authentication$", timeout=1000) 
public myfunc(){
}

对于宁静,我没有找到任何设置的超时,但我想这只是我还没有找到它。

然而,当我为黄瓜尝试timeout=xxx时,它似乎不起作用。即使myfunc()在我的测试中挂起很长时间,测试也没有停止,只是挂起。

有人知道这个timeout=xxx是否还有其他的设置吗?

另外,宁静本身也有类似的超时机制吗?

最后,我使用maven干净安装来驱动测试,也许我缺少一些maven设置才能工作?

任何提示都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-19 11:11:25

“宁静超时”可以由以下属性处理:

  1. webdriver.timeouts.implicitlywait
  2. webdriver.wait.for.timeout
  3. serenity.timeout

中还可以获得有关宁静超时的更多信息。

超时 https://github.com/serenity-bdd/serenity-documentation/blob/master/src/asciidoc/system-props.adoc

票数 3
EN

Stack Overflow用户

发布于 2016-02-16 14:55:51

与其直接使用Maven安装来驱动测试,不如使用Junit或TestNG与其一起进行测试。如果使用Junit,则可以按以下方式完成超时:

代码语言:javascript
复制
@Test(timeout = 20)
public void try() {
    while(true);
}

TestNG也以几乎相同的方式工作:

代码语言:javascript
复制
@Test(timeOut = 10000)
public void try() {
    while(true);
}

黄瓜具有与JUnit和TestNG兼容的依赖项。

您尝试过的Cucumber超时仅在以下情况下才能工作:

  • 所使用的线程处于休眠状态,在您指定的超时中显示的毫秒数。为了克服这个问题,您可以为不同的测试创建一个单独的线程,以便您的线程(用于挂起的测试)休眠。但这可能不是你想要的。
  • 线程成为不可中断的,然后它将在指定超时的两倍之后停止。

如@aslakhellesoy @这里所述

如果线程是不可中断的,超时将停止它们。… 如果线程没有响应中断(),我们将尝试在指定超时两倍之后停止()它。 这使用了不推荐的Thread.stop()方法,但是对于像Cucumber这样的测试工具,应该是可以的。 参343。

所以你得把超时时间缩短一半。

票数 1
EN

Stack Overflow用户

发布于 2019-04-04 13:03:46

或者,如果在每一步之后都需要延迟,则可以使用该属性:

Serenity.step.delay={时间(Ms)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35353027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档