我创建了4个类(Python)的合作。
class A:
## A, B, C are nested classes of A
class B:
...
class C:
...
class D:
...
## example methods
def newB(self):
return self.B()
def newC(self):
return self.C(self.newB())
我在4个测试用例中编写了60个测试方法,这很难。
由于B,C,D不提供太多行为,因此应对A,B,C,D类进行子类化以添加新行为。
问题:
我写了很多测试代码,以确保A,B,C,D合作正确。 如果我将A,B,C,D子类化为A2,B2,C2,D2,我将需要以与测试A,B,C,D相同的方式测试A2,B2,C2,D2的行为。
我该怎么做?
您确保子类数据库正常运行并且没有错误的做法是什么?
给定:单元测试,数据库类和子类
现在测试:
class TestA(unittest.TestCase):
A = A
def setUp(self):
self.a = self.A()
def test_something(self):
...
class MockB(A.B):
...
class AWithMock(A):
B = MockB
class TestAWithMock(TestA):
A = AWithMock
def setUp(self):
self.a = self.A()
def test_something_new(self):
...
class MockB2(A.B):
...
class MockC2(A.C):
...
class MockD2(A.D):
...
class TestWithMock(unittest.TestCase):
def test_b(self):
b = MockB2()
...
def test_c(self):
...
def test_d(self):
...
答案 0 :(得分:0)
import unittest
class TestCaseA(unittest.TestCase):
def setUp(self):
self.thing = A()
def test_does_x():
self.assertTrue(self.thing.does_x())
现在定义一个子类A2:
class A2(A):
...
我会将您的测试用例子类化,但只覆盖setUp
/ setup
方法,因为子类A2
的其余API应与A
一致。
所以你的测试子类只是:
class TestA2(TestCaseA):
def setUp(self):
self.thing = A2()