我有25个测试的测试班。如果我的应用程序版本大于1.5.5,则仅要运行12个测试。
我想我可以在每个受影响的测试中添加一个if
来检查版本是否大于1.5.5。像这样的东西:
def test_to_skip(self):
if StrictVersion(app_version) > StrictVersion('1.5.5'):
self.skipTest('skipped test as feature is not available in this version')
else:
execute_test
这会创建很多代码重复。
还有什么更好的方法可以避免重复吗?
答案 0 :(得分:3)
如果您使用的是git之类的版本控制,那么您可以为2个并发代码库提供2个分支。
您的 Master 分支将是最新版本,而您的 v1.5.5之前的分支将是您的旧版本。
这样,您的最新代码仅包含适用的最新测试。 “较旧”的测试保留在另一个分支上。
答案 1 :(得分:2)
您可以使用自定义装饰器,例如:
def skipIfAppVersionIsLowerThan(expected_version):
if StrictVersion(app_version) < StrictVersion(expected_version):
return unittest.skip(f'App version is lower than {expected_version}')
return lambda func: func
然后:
示例:
@skipIfAppVersionIsLowerThan('1.5.5')
def test1(self):
pass
“跳过测试”文档:https://docs.python.org/3/library/unittest.html#skipping-tests-and-expected-failures