代码之家  ›  专栏  ›  技术社区  ›  Felix

使用参数调用单元测试

  •  0
  • Felix  · 技术社区  · 6 年前

    假设 str.isalnum 功能正在测试中。一个人可以为每个角色写一个案例。

    class TestIsalnum(unittest.TestCase):
        def test_a(self):
            self.assertTrue('a'.isalnum())
    
        def test_dot(self):
            self.assertFalse('.'.isalnum())
    
        def test_comma(self):
            self.assertFalse(','.isalnum())
    

    应该有更简单的方法。你瞧:有一个,下面这个名字很好的函数设计成在使用时不会被自动执行的测试所识别 unittest.main() .

    class TestIsalnum(unittest.TestCase):
        def tessst_with_params(self, char: str, value: bool):
            self.assertEqual(char.isalnum(), value)
    
        def test_not_alphanumerics(self):
            chars = '.,_;*!'
    
            for char in chars:
                self.tessst_with_params(char, False)
    

    一切顺利,考试通过了。但它被认为是 测试。直观地说,每个调用都应该是自己的测试用例。此外,如果一个案例失败,那么后面的案例将不被执行,并且回溯包含的信息非常少。

    有没有一个既定的方法来编写这样的测试?如果没有,这些类型的测试应该如何实现?

    把函数放在同一行比较简洁,但我不确定它的风格和优雅。

    def test_dot(self): self.tessst_with_params('.', False)
    def test_comma(self): self.tessst_with_params(',', False)
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   bain2236    6 年前

    可能的副本 How do you generate dynamic (parameterized) unit tests in python?

    或者至少这个问题可能有一些答案,我相信参数化模块是你所追求的冗长的测试结果