编写可重用(参数化)unittest.TestCase方法

ast*_*rog 26 python unit-testing testcase parameterized-unit-test

可能重复:
如何在python中生成动态(参数化)单元测试?

我正在使用unittest包编写测试,我想避免重复代码.我将进行一些测试,这些测试都需要一个非常类似的方法,但每次只有一个值不同.一个简单而无用的例子是:

class ExampleTestCase(unittest.TestCase):

    def test_1(self):
        self.assertEqual(self.somevalue, 1)

    def test_2(self):
        self.assertEqual(self.somevalue, 2)

    def test_3(self):
        self.assertEqual(self.somevalue, 3)

    def test_4(self):
        self.assertEqual(self.somevalue, 4)
Run Code Online (Sandbox Code Playgroud)

有没有办法编写上面的例子,而不是每次都重复所有的代码,而是编写一个通用的方法,例如

    def test_n(self, n):
        self.assertEqual(self.somevalue, n)
Run Code Online (Sandbox Code Playgroud)

告诉unittest用不同的输入尝试这个测试?

aka*_*ola 11

可用于在Python中进行参数化测试的一些工具是:


poj*_*ojo -3

也许是这样的:

def test_many(self):
    for n in range(0,1000):
        self.assertEqual(self.somevalue, n)
Run Code Online (Sandbox Code Playgroud)

  • 因为没有什么可说的,其他测试也会失败。重要的是要知道是否所有测试都失败,或者只是一两个测试失败,因为这可以帮助诊断问题。很高兴从一开始就知道自己到底有多少次失败,您不想一一修复它们,直到它们停止。 (3认同)
  • 如果发现运行所有测试的期望是合理的 - 他们不仅仅是“看看所有测试是否通过”。如果没有怎么办?告诉开发人员“还是不行,再试一次”?无需对上述“unittest”包可能存在的限制抱有如此的防御态度。 (2认同)