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

问题描述:

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

我们团队开发的所有新功能都放在功能标志的后面,并在每个环境准备就绪时开启,即它们始终在开发中,通常在测试中,有时在集成中,并且仅在当我们认为他们准备好出货时,我们就会进行升级和推广。

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

我最想做的就是使用功能标志并沿着“如果标志X为真,然后运行此测试,否则什么都不做”的代码。但是,我一直无法找到一个“什么都不做”的方法。如果没有设置标志,我已经设置了一些测试来做“挂起”,但是如果没有设置标志,我宁愿让测试不运行。等待使它看起来像我有一堆不完整的测试用例,这是不正确的。

在此先感谢您的建议。

您可以为每个场景添加应该运行的环境,然后在调用黄瓜时使用该标记。

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

在红宝石,这将是这个样子:

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的每个要素的标记。