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

时间:2011-07-29 13:32:27

标签: python unit-testing

我有一个测试(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]

但我想要更多一点,我希望类的定义在不同的文件而不是函数中,并且测试尽可能更标准(测试应该是“正常的”另一个正常测试)。

我刚看到How to run the same test-case for different classes? ...

编辑:我知道要在运行时测试的类的名称... (这是一个重要的特殊情况)

我是意大利人,所以我的英语不完美,对不起。

1 个答案:

答案 0 :(得分: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对象的类中运行。