测试无法同时作用于展位@ unittest.skipIf和@attr

问题描述

我喜欢用@unittest.skipIf@attr在我们的测试框架中控制测试用例。我没有使它正常工作。可能吗?我已尝试使用测试用例的执行顺序(我知道测试执行顺序由测试用例的命名字母顺序控制)的全局测试类成员,以便操纵作为参数发送给{ {1}}。但是似乎当测试脚本对@ unittest.skipIf起作用时,测试类成员全局变量仍处于初始值/认值(在下面的示例中为@unittest.skipIf)。好像是在执行测试之前就进行了测试的收集。

任何想法如何使用@attr解决这个问题,还是应该以不同的方式解决这个问题?有任何想法吗?您是否认为将test-data-creation-scripts与测试框架的代码库一起使用是一个坏主意吗?

设置:

我创建了一个测试框架,该框架在Jenkins的CICD管道中运行测试。实际上,詹金斯中可能有测试工作组合的方法,但是基本上有一个主要工作是这个问题所关乎的最有趣的工作。 我正在使用my_guard==False,并且可以很好地将测试分为不同的测试套件。为了方便起见,我还创建了一些“ test-data-creation-scripts”,它们被开发为测试框架中的测试用例(在下面的示例中显示@attr(testsuite=our_suite_1))。这些脚本基本上也看起来像测试用例,但被标记test_b,因此它们不应在常规CICD管道作业中运行。今天,我仅通过暂时删除@unittest.skip标记才能从我们最喜欢的IDE直接运行这些test-data-creation-scripts,以便能够运行该test-data-creation-scripts。

但是,我现在发现让这些测试数据创建脚本从Jenkins中的其他管道作业中运行很有趣。

期望的行为:

  • 在下面的示例中,如果整个测试都希望跳过test_b 类被执行。
  • 如果要启动测试套件,我希望运行test_b 从詹金斯(Jenkins)职位或类似职位中选择SUITE_1。

我设法使用以下代码跳过了测试数据创建脚本(@unittest.skip

test_b

但是此解决方案不够灵活。这意味着当不在Jenkins内的CICD管道中运行时,test-data-creation-scripts将在所有其他情况下运行。并且通过这种方式,我还在测试代码添加了丑陋的依赖关系,以执行代码。我认为测试代码中不应存在此类依赖性。同意吗?

@unittest.skipIf(is_this_the_cicd_jenkins_machine,‘script skipped since I are Now running on the Jenkins cicd machine’)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)