pdb.set_trace() вызывает зависание носовых тестов, не попадает в отладчик
Вопрос
Я запускаю набор тестов (файлы .py) с помощью носовых тестов.Использование классического
import pdb; pdb.set_trace()
запуск носовых тестов никогда не завершается.Он просто зависает там, где была установлена точка останова, но никогда не попадает в отладчик pdb.
Есть идеи, почему это так?Я пробовал переместить точку останова в несколько разных позиций (другие тестовые функции, другие файлы), но безрезультатно.
Решение
Насморк с -s
/ --nocapture
и вы сможете видеть приглашение pdb и нормально взаимодействовать с отладчиком.
Если использовать командную строку, это означает: -
python manage.py test -s [other-opts-and-args]
Другие советы
Нос захватывает выход и перенаправляя его.Итак, точка останова удается, но вы просто не видите этого.Вам необходимо выключить перенаправление вывода, чтобы выводиться на экране вывода отладки.
Нос может сделать это для вас, если вы используете:
from nose.tools import set_trace; set_trace()
.
вместо:
import pdb;pdb.set_trace()
. В моем случае флаг флага / - Nocapture, по-прежнему не разрешил его и отбросить компилятор в PDB.
Еще одна причина, по которой вы сможете посмотреть, это если вы используете базу данных, такую как MySQL как часть ваших тестов, что она не заблокирована другим одновременным процессом.В моем случае я запустил Python Shell, чтобы запросить базу данных MySQL через SQL Alchemy, и которые заблокировали таблицы.В результате мои тесты носа висели - не бегущие / выходящие.
Я убил Python процессы, которые блокируют столы, и нос резервного нюхали
<Сильные >> $ PS Auxww |Greep Python |.awk '{print $ 2}' |Sudo Xargs убивать -9