簡體   English   中英

在調用覆蓋方法的類中測試方法

[英]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類編寫單元測試,那么(對單元測試來說有點新)

  1. 如何測試method1
    由於它調用的方法在子類中被覆蓋。

  2. 是否創建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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM