Django: почему я не могу получить трассировку (в случае ошибки), когда я запускаю тесты LiveServerTestCase?

Я пишу несколько тестов с Selenium.

Когда я запускаю свои тесты selenium (тип LiveServerTestCase ), и у меня есть некоторая ошибка в моем коде (не в тесте, я имею в виду в выполненном коде, например, на домашней странице, которую я вижу с селеном), я получаю шаблон 500 (который обычно я получаю когда у меня DEBUG = False), даже если у меня есть:

 DEBUG = True INTERNAL_IPS = ('127.0.0.1',) 

Я застрял в этом, и я не понимаю, почему мой тест не удался (потому что в публичном 500 я не показываю исключения).

Почему он ведет себя так? Где я могу найти решение?

Когда я запускаю сервер, он отлично работает (я получаю трассировки).

3 Solutions collect form web for “Django: почему я не могу получить трассировку (в случае ошибки), когда я запускаю тесты LiveServerTestCase?”

из django docs https://docs.djangoproject.com/en/1.4/topics/testing/#other-test-conditions

Кажется невозможным переопределить это в данный момент, даже с https://docs.djangoproject.com/en/1.4/topics/testing/#django.test.utils.override_settings

единственный способ увидеть отладочную информацию, когда возвращается ответ 500, путем его регистрации.

edit: я нашел способ установить DEBUG = True в моих тестах на селен. В моем подклассе я переопределяю конструктор и изменяю настройку.

 from django.conf import settings class SeleniumLiveServerTestCase(LiveServerTestCase): def __init__(self, *args, **kwargs): super(SeleniumLiveServerTestCase, self).__init__(*args, **kwargs) if settings.DEBUG == False: settings.DEBUG = True 

это уродливо, но работает!

Я столкнулся с той же проблемой, и теперь можно переопределить настройки.

на основе вашего примера вы будете импортировать параметры override_settings и поместить декоратор над классом:

 from django.test import override_settings @override_settings(DEBUG=True) class SeleniumLiveServerTestCase(LiveServerTestCase): ... 

подробнее в django docs

Я не очень хорошо знаком с набором тестов Selenium, но я знаю, что если вы развертываете приложение, а ваш IP-адрес не зарегистрирован в кортеже «INTERNAL_IPS», вы можете не увидеть трассировку, даже если DEBUG установлен на Правда. Когда вы используете серверы Django, он автоматически добавляет локальную машину к параметру INTERNAL_IPS, однако обычно это пустой кортеж. Моя ставка заключается в том, что Selenium не делает этого для вас, и может быть, поэтому вы не видите трассировки. Я бы попробовал добавить это, если вы еще этого не сделали.

Что-то вроде этого должно работать нормально:

 INTERNAL_IPS = ('127.0.0.1',) 

Настройки Django (INTERNAL_IPS)

Python - лучший язык программирования в мире.