[英]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.