【发布时间】:2017-11-25 20:03:11
【问题描述】:
我正在为我的项目创建单元测试。
我有一个需要测试的名为 TimerHandler 的类。此类使用一个名为 AudioHandler 的类。这两个类都是单例。请参阅下面的代码。
timer_handler.py
class TimerHandler(metaclass=Singleton):
def play(self):
# some code that needs to be tested
AudioHandler().start()
audio_handler.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 函数的功能?
提前致谢
【问题讨论】:
标签: python python-3.x unit-testing mocking