有选择地禁用每个环境的自动化案例

时间:2013-08-23 21:47:44

标签: java jenkins automation testng

我在做什么:使用Jenkins针对各种环境运行相同的测试套件和测试用例 - 开发/暂存/生产。我正在使用WebDriver和Java实现以及TestNG。

我想做什么:在环境中运行依赖,有选择地禁用某些测试,但不是整个测试套件。我不想在环境之间维护单独的代码库,而是想知道实现这一目标的方法。

初步想法:我在考虑在Jenkins中为每个环境中的每个作业设置一个系统属性,每个测试装饰者都必须提取这些信息以确定是否应该运行。我觉得它很笨重,我不知道怎么做,我不确定这是不是正确的方法。

有人能告诉我完成此任务的最佳方法吗?我希望这不是最好的方式。

谢谢,

3 个答案:

答案 0 :(得分:1)

您是否看过TestNG听众?

您可以在运行测试套件之前编写一个侦听器但是在运行测试之后是标识符,迭代测试列表并删除您不想运行的测试。 因为这是编程的,所以你可以编写任何java来实现你想要的东西。

此外,您可以创建注释以识别在哪个环境中运行哪些测试;例如用@RunInEnvironment({“UAT”,INT“})注释那些测试;然后你的监听器可以使用这些注释从列表中删除不需要的测试。

答案 1 :(得分:0)

我认为小组是你的答案。使用TestNG,您可以包含/排除组。您只需要定义哪些测试在哪些组中。

http://testng.org/doc/documentation-main.html#exclusions

答案 2 :(得分:0)

@MrTi这个解决方案相当静态,我相信他想要更多的动态。

如果在启动时检测到您的环境,您可以尝试使用that thread中描述的解决方案之一。这个框架也许有用:https://github.com/wolfs/testng-rules

注意:在JUnit上,您将使用规则https://github.com/lacostej/web-validators/commit/2e1af8e1d9d1bf206849702d4231961563457815(实现使用旧API)