假设我有以下课程:
class A():
def method1(self, x):
x = x * 2
x = self.method2(x)
return x
def method2(self, x):
raise NotImplementedError
class B(A):
def method2(self, x):
return x + 5
如果我正在为A类编写单元测试, (对单元测试来说是个新手)
如何测试method1
?
由于它调用的方法在子类中被覆盖。
我是否创建类A
或类B
的对象?(我正在测试A
)
为A创建对象将导致NotImplementedError
。可能的解决方案是使用B
的对象测试此方法,或者可能在编写类B
的测试时测试此方法。
修改:
尽管我还没有完全固定在设计上,但是类A
很有可能不会直接实例化。
答案 0 :(得分:4)
我不会依赖B
的实例-您可能也想对B
进行单元测试,但是如果您要测试A
,则不应依赖在其他班级的逻辑上。
您可以测试调用method1
会引发NotImplementedError
,但这很脆弱-如果method1
直接引发该错误,而无论method2
,该测试也会通过。
更好的方法可能是创建一个覆盖method2
并仅按原样返回x
的伪类,并将其用于测试A
。