考虑这个例子:
class A:
def do_stuff(self):
# ...
some_var = self.helper_method()
# ...
def helper_method(self):
# This method must be implemented by subclass
raise NotImplementedError()
class B(A):
def helper_method(self):
# implementation for class B
class C(A):
def helper_method(self):
# implementation for class C
我的任务是为A
、B
和{do_stuff
)。在
但是如果我不能直接使用某些it方法,如何测试A
类呢?
我应该只测试B
和C
类(它们有helper_method
的实现)
或者,在Python中有测试抽象类的通用方法?在
你应该测试逻辑,而不是实现。A的do\u stuff()方法本身没有逻辑,对吗?它能做什么取决于你是在处理B还是C。相反,在我看来,测试B和C的do\u stuff()方法更有意义——你知道它们到底应该做什么。在
do_stuff
存在于A
上,因此请在A
上测试它。helper方法存在于具体类上,因此在那里测试它们。您可以使用^{给出一些抽象类:
这就是我要测试它的方法。在
^{pr2}$你没有真正的抽象基类,至少就语言而言。没有什么能阻止你实例化它。在
如果您使用
^{pr2}$abc
模块来定义无法实例化的类:然后,您可以通过重写
A
的一组抽象方法使其成为可实例化的:无论哪种情况,您仍然可以测试抽象方法是否引发
NotImplementedError
或者根据需要测试其默认实现。在
相关问题 更多 >
编程相关推荐