【发布时间】:2020-04-05 13:51:30
【问题描述】:
我想知道这是否是一种好的做法以及您将如何测试它:
class Base(object):
def __init__(self):
self.total = 0
def process_me(self, value: float):
raise NotImplementedError
def process_many(self, values: List[float]):
for val in values:
self.process_me(val)
class Sum(Base):
def process_me(self, value: float):
self.total += value
class Product(Base):
def process_me(self, value: float):
self.total *= value
这看起来不错,只写了子类Sum和Product的重要方法。但是,我发现开发此代码有两个问题:
真的很难测试!最终,您必须在每个子类中测试
process_many方法,或者选择其中一个,从而破坏测试中的所有对称性。也许为Base类实现一个虚拟的process_me方法并引发警告?也许这是一个可以使用抽象基类的例子,但是我想我在尝试测试时会遇到类似的问题。
【问题讨论】:
标签: python testing inheritance abstract-class