pdb.set_trace () вызывает замороженные носеты, не попадает в отладчик

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

import pdb; pdb.set_trace() 

nosetests run просто никогда не завершается. Он просто зависает прямо там, где установлена ​​точка останова, но никогда не падает в отладчик 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() 

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

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

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

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