0

pytest-mock 补丁无法按预期工作。我的代码:

utils.py

def my_func():
    return 42

classes.py

from utils import my_func

class MyClass:
    def class_method(self):
        return my_func()

test_classes.py

import pytest
from classes import MyClass

def test_myclass(mocker):
    mocker.patch("utils.my_func", return_value=21)
    assert MyClass().class_method() == 21

这失败了,返回的是42而不是21.

4

1 回答 1

1

解决方案是在测试中更改补丁。代替

mocker.patch("utils.my_func", return_value=21)

mocker.patch("classes.my_func", return_value=21)

classes.py因为:中的这一行from .utils import my_func

于 2021-06-07T13:12:49.627 回答