考虑一个模块,该模块可以在某种情况下注册事件处理程序并发射它们:
# mymodule/myfile.py
_event_handlers = []
def register_event_handler(handler):
_event_handlers.append(handler)
def fire_event_handlers():
for handler in _event_handlers:
handler()
我现在想测试事件处理程序的注册工作:
# tests/test_mymodule.py
from mymodule.myfile import register_event_handler, fire_event_handlers
def test_event_handler():
def example_handler():
pass
register_event_handler(example_handler)
fire_event_handlers()
# assert example_handler was called
我如何测试我的功能是否称为?
有一些使用
example_handler
的嵌套功能),但是由于我不想模拟模块的任何现有函数,所以我看不到如何在这里使用它。您可以使用
unittest.mock
跟踪是否在不嘲笑任何现有函数的情况下调用example_handler