gpt4 book ai didi

python - 为抽象类编写单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 12:57:15 25 4
gpt4 key购买 nike

考虑这个例子:

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

我的任务是为ABC 类编写单元测试(尤其是do_stuff) .

但是如果我不能直接使用它的某些方法,我该如何测试 A 类呢?我是否应该只测试 BC 类(它们具有 helper_method 的实现)或者也许有在 Python 中测试抽象类的通用方法?

最佳答案

您实际上并没有抽象基类,至少就语言而言是这样。没有什么能阻止您实例化它。

a = A()

如果您使用 abc 模块来定义您无法实例化的类:

class A(metaclass=abc.ABCMeta):
...

然后您可以通过重写其抽象方法集使 A 可实例化:

A.__abstractmethods__ = frozenset()
a = A()
# test away

无论哪种情况,您仍然可以测试抽象方法是否会引发 NotImplementedError

try:
a.helper_method()
except NotImplementedError:
print("Test passed")
else:
print("Test failed")

或根据需要测试其默认实现。

关于python - 为抽象类编写单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36413844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com