如何针对不同类运行相同的测试?

2 投票
1 回答
729 浏览
提问于 2025-04-16 22:30

我有一个测试(unittest.TestCase),我想用相同的接口来测试这个类的不同实现。

我现在的做法大概是这样的:

def create_test(class_to_test):
    class TestClass(unittest.TestCase):
        def setUp(self):
            self.class_to_test = class_to_test
            self.class_to_test.two = 2
        def test_2(self):
            self.assertEqual(self.claa_to_test.two, 2)

    return TestClass

test = [create_test(x) for x in classes_to_test]

但我想要更进一步,我希望这个类的定义放在一个不同的文件里,而不是放在函数里面,并且测试的方式尽量标准化(这个测试应该和其他普通测试一样“正常”)。

我刚刚看到了一篇文章,讲的是如何对不同的类运行相同的测试用例?...

补充一下:我只在运行时才知道要测试的类的名字……(这是一个重要的细节)

我来自意大利,所以我的英语不是很好,抱歉。

1 个回答

2

不太确定这是不是你想要的,但你可以通过子类化单元测试来实现:

class A:
   def __init__(self):
      self.a = 10

class B(A):
   def __init__(self):
      A.__init__(self)
      self.b = 50

class A_Test(unittest.TestCase):
   def setUp(self):
      self.test_obj = A()

   def test_A(self):
      self.assertEqual(self.test_obj.a, 10)

class B_Test(A_Test):
   def setUp(self):
      self.test_obj = B()

   def test_B(self):
      self.assertEqual(self.test_obj.b, 50)

test_A 在 B_Test 中被继承,所以这个测试会在你的(继承自 A 的)B 对象中运行。

撰写回答