Я получаю немного странное поведение, используя декоратор override_settings
. Это в основном работает, когда я запускаю тест самостоятельно, но не буду работать, если я запускаю весь набор тестов.Django override_settings не будет работать для запуска нескольких тестов
В этом тесте я изменяю REST_FRAMEWORK
вариант, потому что при выполнении этого набора я хочу, чтобы установить параметры аутентификации, с другими тестами не использует проверку подлинности:
@override_settings(REST_FRAMEWORK=AUTH_REST_FRAMEWORK)
class AuthTestCase(TestCase):
@classmethod
def setUpClass(cls):
super(AuthTestCase, cls).setUpClass()
cls.client = Client()
def test_i_need_login(self):
response = client.get('/')
self.assertEqual(response.status_code, 401)
так, если я ...
$ python manage.py test myapp/tests/test_auth.py
настройки применяются и отлично работает!
, но если запустить весь набор тестирования, как:
$ python manage.py test
тест потерпит неудачу. Мне кажется, что эти настройки (или некоторые объекты) кэшируются из других тестов. У меня также есть другой класс в другом тестовом файле, который использует экземпляр клиента аналогичным образом.
Окружающая среда: Python: 2.7
Django: 1.10
Edit:
Обходной я нашел к этой проблеме заключается в использовании найти для запуска тестов, это может быть псевдонимом или скрипт с ...
find . -name 'test*.py' -exec python manage.py test {} \;
недостатком является то, что выход из многих тестов г ets, сложенных на экране, и может несколько раз создать/уничтожить базу данных теста. Если вы не добавите опции в команду, как REUSE_DB, если используете django-нос.
Существует способ вокруг этого ?? возможно, путем перезагрузки модуля. – AndreLobato
Вам нужно будет написать собственный тестовый бегун, но это будет нелегко – e4c5