распределительная плата.set trace () вызывая замороженные nosetests, не падает в отладчик


Я запускаю набор тестов (файлы.py) с помощью nosetests. Использование классического

import pdb; pdb.set_trace()

запуск nosetests просто никогда не завершается. Он просто висит прямо там, где была установлена точка останова, но никогда не падает в отладчик pdb.

есть идеи, почему это будет? Я попытался переместить точку останова в несколько разных позиций (другие тестовые функции, другие файлы) безрезультатно.

3 52

3 ответа:

запустить нос с -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()

в моем случае флаг флаг-s / --nocapture, все еще не разрешил его и бросил компилятор в pdb.

еще одна причина, по которой вы можете изучить, заключается в том, что если вы используете базу данных, такую как MySQL, как часть ваших тестов, то она не заблокирована другим одновременным процессом. В моем случае я запустил оболочку python для запроса базы данных MySQL через SQL Alchemy, и это заблокировало таблицы. В результате мои тесты на нос висели-не бегали / выходили.

I убил процессы python, которые запирали таблицы, и нос снова нюхал

> $ ps auxww / grep python / awk '{print $2} ' / sudo xargs kill -9