使用 pytest-mock returns 错误模拟 class 方法
Mocking class method with pytest-mock returns error
我正在尝试使用 pytest-mock 模拟 class 方法。我将下面的代码放在一个文件中,当测试为 运行 时,我在 patch
函数中得到 ModuleNotFoundError: No module named 'RealClass'
。如何实现?
class RealClass:
def some_function():
return 'real'
def function_to_test():
x = RealClass()
return x.some_function()
def test_the_function(mocker):
mock_function = mocker.patch('RealClass.some_function')
mock_function.return_value = 'mocked'
ret = function_to_test()
assert ret == 'mocked'
在您的情况下,由于您正在修补测试文件本身中存在的 class,因此您将使用 mocker.patch.object
.
mock_function = mocker.patch.object(RealClass, 'some_function')
collected 1 item
tests/test_grab.py::test_the_function PASSED [100%]
============================== 1 passed in 0.03s ===============================
我正在尝试使用 pytest-mock 模拟 class 方法。我将下面的代码放在一个文件中,当测试为 运行 时,我在 patch
函数中得到 ModuleNotFoundError: No module named 'RealClass'
。如何实现?
class RealClass:
def some_function():
return 'real'
def function_to_test():
x = RealClass()
return x.some_function()
def test_the_function(mocker):
mock_function = mocker.patch('RealClass.some_function')
mock_function.return_value = 'mocked'
ret = function_to_test()
assert ret == 'mocked'
在您的情况下,由于您正在修补测试文件本身中存在的 class,因此您将使用 mocker.patch.object
.
mock_function = mocker.patch.object(RealClass, 'some_function')
collected 1 item
tests/test_grab.py::test_the_function PASSED [100%]
============================== 1 passed in 0.03s ===============================