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

StackOverflow https://stackoverflow.com/questions/9013728

  •  14-11-2019
  •  | 
  •  

Вопрос

Я запускаю набор тестов (файлы .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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top