假設我正在使用一個名爲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