假设我正在使用一个名为Animal的框架。单元测试:测试父对象方法有意义吗?
class Animal(object):
def speak(self):
logging.info(self.sound)
我要继承这个对象为了使用它,它可能是这个样子:
class Dog(Animal):
def __init__(self):
self.sound = 'Woof Woof'
我看到它,我可以做两件事情的方式。第一个是这样的:
dog = Dog()
assert dog.sound == 'Woof Woof'
第二个选项是模拟出logging.info并检查它是否被调用。我对他们两人有着复杂的感受。
第一个感觉就像我只是测试我的配置,第二个感觉就像我没有真正测试我想要的对象。
我使用这个简单的例子,因为也许那些不使用Django的人可以给我一些指针。我遇到的真正问题涉及Django通用视图。
例如,我可以有这个模板视图:
class HomeView(TemplateView):
template_name = 'home.html'
难道我只是测试,如果TEMPLATE_NAME具有正确的价值还是我使用测试客户端做一个更高的水平测试,测试的完整视图?
所以你说我应该两个都做? – Pickels 2011-04-19 20:18:51
@皮克尔:是的。分别测试父母和孩子。 – 2011-04-19 20:20:29
我开始回答这个问题,但被退出了。我同意你的回答,但只是为了阐述。当我们测试孩子课时,你的问题可以改写为:我应该测试从父类派生的功能。 如果我的理解是正确的,那么你需要确保所有的组件都经过测试。因此,有一个父类的测试用例和一个用于子类的测试用例。您不需要在子项中测试父项功能,除非您的功能过载。 – 2011-04-19 20:20:49