簡體   English   中英

Python 3 單元測試,創建單例類函數的模擬

[英]Python 3 unit-testing, create mock of singleton class function

我正在為我的項目創建單元測試。

我有一個叫做 TimerHandler 的類需要測試。 此類使用名為 AudioHandler 的類。 這兩個類都是單例。 請參閱下面的代碼。

timer_handler.py

class TimerHandler(metaclass=Singleton):

    def play(self):
        # some code that needs to be tested

        AudioHandler().start()

音頻處理程序.py

class AudioHandler(metaclass=Singleton):

    def start(self):
        # some code that connects with an audio device

我正在嘗試模擬 AudioHandler 的 start 方法,因此它只會返回 None 並且不會嘗試連接到音頻設備。 單元測試看起來像這樣:

@patch.object(AudioHandler, 'start', return_value=None)
def test_play_pause(self, start):

    self.timer_handler.play()

問題是在AudioHandler里面還是運行了原來的start函數里面的代碼。

如何編寫一個測試函數來刪除/模擬 AudioHandler 中 start 函數的功能?

提前致謝

您應該從導入它的模塊路徑模擬一個類

@patch('timer_handler.AudioHandler')

之后,您可以將您的方法添加到模擬對象

請閱讀https://docs.python.org/3/library/unittest.mock.html#where-to-patch

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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