#python #debugging #winpdb
#python #отладка #winpdb
Вопрос:
Мне интересно, есть ли у кого-нибудь подсказка о том, как отладить unittest или любой другой фрагмент кода в django, если уж на то пошло, используя отладчик, подобный winpdb? Я пытаюсь
winpdb manage.py test photo
который запускает мой unittest для моего приложения photo, но winpdb выходит из строя. Есть ли альтернативы? Каков наилучший способ сделать это?
Я использую Linux, Ubuntu 10.10.
Ответ №1:
Вы можете использовать pdb для отладки вашей программы.
import pdb
def some_function():
pdb.set_trace()
some_other_computation()
Когда программа нажимает на метод set_trace, выполнение приостанавливается, и вы попадаете в интерактивную оболочку. Затем вы можете изучить переменные и пошагово выполнить свой код.
Ответ №2:
Посмотрите на pudb, это полноэкранный консольный визуальный отладчик для Python. Очень удобно для отладки с хорошим консольным интерфейсом.
import pudb
def some_function():
pudb.set_trace()
some_other_computation()
Вам нужно будет передать параметр -s (например: python manage.py test -s
), чтобы отключить захват выходных данных (который предотвращает запуск отладчика).
Ответ №3:
Добавьте в свой код следующие строки:
import rpdb2;
rpdb2.start_embedded_debugger_interactive_password()
Вы можете найти более подробную информацию здесь:http://winpdb.org/docs/embedded-debugging
Ответ №4:
Проблема в том, что django создает другой процесс, в котором он запускает тестируемое приложение. Таким образом, вы не можете просто использовать winpdb в своем основном процессе django.
Вы должны вызвать отладчик rpdb2 (внутренний отладчик winpdb) непосредственно перед местом, которое вы хотите протестировать, и подключиться с помощью winpdb к этому запущенному отладчику.
Смотрите руководство здесь:https://code.djangoproject.com/wiki/DebuggingDjangoWithWinpdb
Комментарии:
1. Django не «создает другой процесс, в котором он запускает тестируемое приложение»; это просто false.