Я пытаюсь исправить переменную в модуле settings
во время выполнения тестового метода:
from unittest import mock
class Test(...):
@mock.patch('settings.TARGET_SCORES_PER_SECTION', True)
def test_register_user(self):
Я получаю эту ошибку:
ERROR: tests.test_user.transplant_class.<locals>.C (test_register_user)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/mock.py", line 1179, in patched
return func(*args, **keywargs)
TypeError: test_register_user() missing 1 required positional argument: 'self'
Пробовал разные подходы, решения не нашел.
Что я делаю не так?
Эта версия работает просто отлично:
def test_register_user(self):
with mock.patch('settings.TARGET_SCORES_PER_SECTION', True):
self._test_register_user()
def _test_register_user(self):
И я надеялся использовать его в качестве декоратора будет работать так же.
settings
и добавить исправленный макет в параметры тестовой функции, как вdef test_register_user(self, mock_target_scores):
- person progmatico   schedule 19.04.2019as
в оператореwith
, что означает, что вы не хотите получать доступ к макету, кроме как сделать с ним патч. Что также хорошо для простых фиктивных случаев или если вы настраиваете другой объект для передачи в патч с помощьюnew
- person progmatico   schedule 19.04.2019self
в метод класса на мгновение? - person progmatico   schedule 19.04.2019