setattr в monkeypatching функции выдает ошибку атрибута - PullRequest
1 голос
/ 07 мая 2020

У меня есть следующий код

/tests/test_fixme.py

def make_my_patch():
    name = "Dinesh"
    return name


def test_make_patch(monkeypatch):

    monkeypatch.setattr(make_my_patch,"name","DineshKumar")

Использование setattr для установки name вызывает ошибку атрибута.

Примечание. поместил обе функции в один файл в качестве решения для остановки пробелов, чтобы на данный момент избежать ошибок модуля / импорта.

Вот трассировка.

================================================================== FAILURES ==================================================================
______________________________________________________________ test_make_patch _______________________________________________________________

monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fddd5675630>

    def test_make_patch(monkeypatch):

>       monkeypatch.setattr(make_my_patch,"name","DineshKumar")
E       AttributeError: <function make_my_patch at 0x7fddd5676048> has no attribute 'name'

tests/test_fixme.py:16: AttributeError
========================================================== short test summary info ===========================================================
FAILED tests/test_fixme.py::test_make_patch - AttributeError: <function make_my_patch at 0x7fddd5676048> has no attribute 'name'
============================================================= 1 failed in 0.02s ==============================================================
(testenv) user@user:~/MyGitHub/MyLearning/Python/MyUnitTests/Testing10$ 

Как правильно исправить атрибут имени ? Однако, если я помещаю свой код в класс, setattr для переменной класса работает нормально? Не могли бы вы объяснить, почему он не работает для функций?

...