Pytest-mock не исправляет импортированную функцию в модуле класса

Исправление 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.


person felice    schedule 07.06.2021    source источник


Ответы (1)


Решение состоит в том, чтобы изменить исправление в пределах теста. Вместо

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

записывать

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

из-за этой строки в classes.py: from .utils import my_func.

person felice    schedule 07.06.2021