跳过Python测试应用程序版本是否低于1.5.5

时间:2019-06-04 13:30:37

标签: python testing

我有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

这会创建很多代码重复。

还有什么更好的方法可以避免重复吗?

2 个答案:

答案 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

然后:

  1. 装饰单个测试或
  2. 将1.5.5测试放在一个单独的测试用例中,并修饰整个类

示例:

@skipIfAppVersionIsLowerThan('1.5.5')
def test1(self):
  pass

“跳过测试”文档:https://docs.python.org/3/library/unittest.html#skipping-tests-and-expected-failures