该项目的结构是
主.py
from src.tools.tool_a import fun
def main_fun():
fun()
tools_a.py
def fun():
raise Exception('')
test_fun.py
from unittest.mock import patch
from src.main import main_fun
@patch('src.tools.tool_a.fun')
def test_main_fun(fun):
main_fun()
如果我运行 pytest
tests/test_fun.py
,我会从方法 fun()
中得到异常。我已经嘲笑了它,所以不明白嘲笑它的正确方法是什么。
@jonrsharpe 在评论中给出了正确的答案,但是解决方案更容易找到,我将其发布在这里:
您可以在使用事物的地方进行修补,而不是在定义它们的地方进行修补: docs.python.org/3/library/unittest.mock.html#在哪里打补丁
因此,代码应该是:
from unittest.mock import patch
from src.main import main_fun
@patch('src.main.fun')
def test_main_fun(fun):
main_fun()