问题描述
我喜欢用@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 (将#修改为@)