nosetests --pdb
позвольте мне остановиться в случае ошибки или сбоя, но это уже слишком поздно для моих нужд. Пошаговое выполнение кода во время выполнения помогает мне определить причину проблемы.
Тем не менее, носовые тесты полезны, поскольку они позволяют проводить тесты, основанные на относительном импорте (т. Е. Тесты в пакете).
Как я могу установить точки останова перед выполнением тестов? В настоящее время я использую:
python -m pdb /path/to/my/nosetests testfile.py
Это решение не подходит. Нозетесты мешают выводу pdb, и мои элементы управления с клавиатуры (например, клавиши со стрелками) не работают.
Используя import pdb; pdb.set_trace () может показаться хорошей идеей, однако ностесты блокируют мой доступ к консоли pdb.
from nose.tools import set_trace; set_trace()
Даже лучше, чем не забывать использовать,
-s
- это использоватьset_trace
вариант, который поставляется с Nose. Добавитьfrom nose.tools import set_trace; set_trace()
куда бы вы ни хотели проникнуть в отладчик. О перенаправлении stdin / out позаботятся вы. Единственный странный побочный эффект, с которым я столкнулся, - это невозможность перезапустить ваш код из pdb (используя
run
) во время отладки во время пробежки по носу.источник
pdb
? Я уверен, что есть документы, но, как мне кажется,s
"n
входит " в вызов функции, переходит к "следующему" оператору,u
перемещается "вверх" по стеку иd
перемещается "вниз". Вы можете использоватьb
для установки точек останова иc
для «продолжения» и выхода из пошагового отладчика. Надеюсь, это поможет!Если у вас есть ipython , для неограниченного использования возможностей:
import ipdb; ipdb.set_trace()
* безграничная привлекательность: как в ipython - автозаполнение, раскраска и т. д.
источник
Если вы используете pytest , вы можете использовать
import pytest; pytest.set_trace()
См. Документацию .
источник