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)

 
Interesting Posts for Van-Lav

Как исправить этот OverflowError?

Построение динамических запросов Django динамически с помощью args и kwargs

Как найти максимальное число (число) в списке с привязанными номерами

Как заставить PyCharm автоматически заполнять код в методах?

Загрузка текстового файла, содержащего как float, так и строку, используя numpy.loadtxt

Как написать строковые литералы в python, не избегая их?

Python подсчитывает все возможные комбинации для таблицы

как отменить изображение цветной карты на скалярные значения

Эллипсис перечисляет и объединяет список в Python

Не пронумерованные страницы в ReportLab

Проверьте, являются ли два «простых» утверждения if в C эквивалентными

Запустите python unit test с помощью python 2.7 и 3.x

Установка PyGame на ОС Mountain Lion

Отправка почтового запроса на страницу aspx

Как избежать «слишком глубоко вложенной» ошибки при создании PDF-файлов с помощью Sphinx?

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