如果应用程序版本低于1.5.5,则跳过Python测试

2024-06-25 22:35:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个测试班,有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

这将产生大量代码重复

有没有更好的方法来避免重复


Tags: totestself版本app应用程序ifversion
2条回答

如果您使用的是版本控制,比如git,那么您的两个并发代码库可以有两个分支

您的主分支将是最新版本,而v1.5.5之前的分支将是较旧版本

这样,您的最新代码只包含适用的最新测试。“旧的”测试留在你的另一个分支上

您可以使用自定义装饰器,如:

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

相关问题 更多 >