Отладка django / unittest? - PullRequest
       16

Отладка django / unittest?

4 голосов
/ 20 апреля 2011

Мне интересно, есть ли у кого-нибудь подсказка о том, как отладить юнит-тест или любой другой фрагмент кода в django, если на то пошло, с использованием отладчика вроде winpdb? Я пытаюсь к

winpdb manage.py test photo

, который запускает мой юнит-тест для моего фото-приложения, но winpdb вылетает. Есть ли альтернативы? Каков наилучший способ сделать это?

Я использую Linux, Ubuntu 10.10.

Ответы [ 4 ]

1 голос
/ 08 августа 2013

Посмотрите на pudb , это полноэкранный консольный визуальный отладчик для Python. Очень хорошо для отладки с хорошим консольным интерфейсом.

import pudb
def some_function():
    pudb.set_trace()
    some_other_computation()

Вам потребуется передать параметр -s (например, python manage.py test -s), чтобы отключить захват вывода (что препятствует запуску отладчика).

1 голос
/ 20 апреля 2011

Вы можете использовать pdb для отладки вашей программы.

import pdb
def some_function():
    pdb.set_trace()
    some_other_computation()

Когда программа нажмет на метод set_trace, выполнение будет приостановлено, и вы попадете в интерактивную оболочку. Затем вы можете просмотреть переменные и пройтись по своему коду.

0 голосов
/ 08 августа 2013

Добавьте следующие строки в ваш код:

import rpdb2; 
rpdb2.start_embedded_debugger_interactive_password()

Вы можете найти больше информации здесь: http://winpdb.org/docs/embedded-debugging/

0 голосов
/ 19 апреля 2013

Проблема в том, что django создает другой процесс, в котором он запускает тестируемое приложение. Так что вы не можете просто использовать winpdb в вашем основном процессе django.

Вы должны позвонить в отладчик rpdb2 (внутренний отладчик winpdb) непосредственно перед тем местом, которое вы хотите проверить, и присоединить с помощью winpdb к этому работающему отладчику.

Смотрите учебник здесь: https://code.djangoproject.com/wiki/DebuggingDjangoWithWinpdb

...