[英]Testing a method in a class which calls an overridden method
假設我有以下課程:
class A():
def method1(self, x):
x = x * 2
x = self.method2(x)
return x
def method2(self, x):
raise NotImplementedError
class B(A):
def method2(self, x):
return x + 5
如果我正在為A類編寫單元測試,那么(對單元測試來說有點新)
如何測試method1
?
由於它調用的方法在子類中被覆蓋。
是否創建A
類或B
類的對象? (我正在測試A
)
為A創建對象將導致NotImplementedError
。 可能的解決方案是使用B
的對象測試此方法,或者可能在編寫針對B
測試時測試此方法。
編輯 :盡管我還沒有完全固定在設計上,但A
類很可能不會直接實例化。
我不會依賴B
的實例-您可能也想對B
進行單元測試,但是如果要測試A
,則不應依賴於其他類的邏輯。
您可以測試調用method1
引發NotImplementedError
,但這很脆弱-如果method1
直接引發該錯誤,無論method2
如何,測試也將通過。
更好的方法可能是創建一個覆蓋method2
並僅按原樣返回x
的偽類,並將其用於測試A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.