如何在黄瓜中有条件地进行测试

时间:2014-12-05 22:58:01

标签: tags cucumber conditional-statements

在对这个问题做了一些研究之后,我发现它之前已经被问过了。答案总是似乎是“如果你需要有条件地跳过测试,你做错了什么。”我是Cucumber和编程的新手,所以我希望有人建议如何摆脱目前的困境。

我们团队开发的所有新功能都放在功能标记后面,并在它们准备就绪时打开每个环境,即它们始终在开发中,通常在测试中,有时在集成中,并且仅在在我们认为他们准备发货的时候进行分期和刺激。

我知道标记功能,并认为这对我来说可能是一个解决方案,除了一些事情。一,有很多功能,它们经常在各种环境中打开和关闭。除非我完全处理问题,否则我将错过是否需要更改特定的功能标记。另一个问题是我在共享测试代码库中工作,我们的标记系统目前没有按环境设置。虽然我可以开始游说这一变化,但短期内不太可能发生,而且由于之前给出的原因,我不确定我对这个解决方案感到满意。

我理想的做法是使用功能标志和代码“如果标志X为真,那么运行此测试,否则什么也不做”。但是,我还没有找到“无所事事”的方法。如果未设置标志,我已将某些测试设置为“挂起”,但如果未设置标志,我宁愿让测试完全不运行。挂起使得我看起来有一堆不完整的测试用例,这根本不是真的。

提前感谢您的建议。

2 个答案:

答案 0 :(得分:0)

您可以使用应该运行的环境标记每个方案,然后在调用黄瓜时使用该标记。

答案 1 :(得分:0)

一个可能的解决方案是为每个功能的所有测试添加一个标签,然后编写一个启动脚本,该脚本通过项目,检查每个标志,然后将相关标签传递给黄瓜。

在ruby中,这看起来像是:

cuke_cmd = "cucumber --tags @essential
flags.each do |flag|
  if getFlagState(flag) # code which checks if the flag is true
    cuce_cmd += ","+getFlagTag(flag) # getFlagTag returns the associated tag in the format @flag
  end
end
system(cuke_cmd)

这个@essential标签将应用于任何一直运行的东西,每个附加功能都有一个与之关联的标签。

然后,您将需要浏览所有可能的标志并将相关标签附加到命令。

在此结束时,程序将执行为标志设置为true的每个功能传递标签。