Если я пойму, что вы пытаетесь сделать, это даст вам представление о том, как это сделать.
Я заставил settings.py
оставить только присвоение False
- TARGET_SCORES_PER_SECTION
.Упоминание __main__
в патче - всего лишь небольшое раздражение, оно не примет неквалифицированное имя.
import unittest
from unittest import TestCase
from unittest.mock import patch
import settings
def register_user():
return settings.TARGET_SCORES_PER_SECTION
class Test(TestCase):
@patch('__main__.settings')
def test_register_user(self, mock_settings):
# setup your mock
mock_settings.TARGET_SCORES_PER_SECTION = True
# test your function
self.assertTrue(register_user())
if __name__ == '__main__':
unittest.main()
Редактировать:
AsЯ думаю, чтобы лучше понять вопрос OP, приведенный выше код также можно изменить на это, если вам нравится:
import unittest
from unittest import TestCase
from unittest.mock import patch
import settings
def register_user():
return settings.TARGET_SCORES_PER_SECTION
class Test(TestCase):
@patch('settings.TARGET_SCORES_PER_SECTION', True)
def test_register_user(self):
self.assertTrue(register_user())
if __name__ == '__main__':
unittest.main()
Где True
- параметр new
.Этот объект используется для исправления места, которое вы упоминаете в строке исправления.Это может быть более элегантно, но требует наличия настроенного объекта для насмешек.