调试时如何使用pytest-mock?获取mocker实例传入测试函数
如何调试使用pytest-mock的单元测试函数?
我在使用pytest-mock的mocker特性编写单元测试,代码如下:
def my_unittest(mocker): m = mocker.spy(my_module, 'my_func') calling_a_func_which_calls_my_func() # 检查是否被调用 assert m.call_count == 1
现在想调试这个测试函数,不知道怎么获取mocker实例并传入。我试过这样写:
mocker = pytest_mock.mocker() my_unittest(mocker)
但行不通,希望能解惑。
解决方法:
- 直接用pytest命令运行测试:不需要手动创建
mocker实例,pytest会自动将这个fixture注入到测试函数中。在终端执行:pytest your_test_file.py::my_unittest -xvs-xvs参数会显示详细的运行日志和调试信息,方便排查问题。 - 手动创建mocker实例调试:如果要在脚本里手动调用测试函数,需要使用
pytest-mock提供的MockFixture类来创建实例,而不是直接调用pytest_mock.mocker():
注意这种方式和pytest实际运行时的环境存在细微差异,仅适合简单调试场景。from pytest_mock import MockFixture # 创建符合要求的mocker实例 mocker = MockFixture() # 调用测试函数 my_unittest(mocker) - 用IDE直接调试:PyCharm、VS Code等主流IDE都支持pytest测试的调试功能。在测试函数的关键代码行设置断点,然后选择"调试该测试"选项,IDE会自动处理
mocker的注入,无需手动传参。
内容的提问来源于stack exchange,提问作者Marcus Therkildsen
相关产品推荐
相关产品推荐

