使用 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 ===============================