如何针对不同类运行相同的测试?
我有一个测试(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 对象中运行。