Я могу отладить с отладчиком Python при использовании py.test так или иначе?

Я использую py.test для поблочного тестирования моя программа Python. Я хочу отладить свой тестовый код с отладчиком Python нормальный путь (которым я имею в виду pdb.set_trace () в коде), но я не могу заставить его работать.

Помещение pdb.set_trace () в коде не работает (повышает IOError: чтение из stdin, в то время как произведенный получен). Я также попытался выполнить py.test с опцией - pdb, но это, кажется, не добивается цели, если я хочу исследовать то, что происходит перед моим утверждением. Это повреждается, когда утверждение перестало работать, и идущий дальше от той строки означает завершать программу.

Кто-либо знает способ получить отладку, или разве отладка и py.test просто не предназначены, чтобы быть вместе?

64
задан Vini.g.fer 19 June 2017 в 14:15
поделиться

3 ответа

Я не знаком с py.test, поставьте для unittest, вы делаете следующее. Возможно, py.test похож:

В вашем тестовом модуле (mytestmodule.py):

if __name__ == "__main__":
    unittest.main(module="mytestmodule")

Затем запустите тест с помощью

python -m pdb mytestmodule.py

. Вы получите интерактивную оболочку pdb.

Глядя на документацию, похоже, что py.test имеет параметр командной строки - pdb :

http://codespeak.net/py/dist/test/features.html

​​
1
ответ дан 24 November 2019 в 15:46
поделиться

это очень просто: поместите assert 0 там, где вы хотите начать отладку в своем коде, и запустите свои тесты с помощью:

py.test --pdb 

done :)

В качестве альтернативы, если вы используете pytest-2.0.1 или выше, существует также помощник pytest.set_trace () , который вы можете поместить в любое место вашего тестового кода. Вот документы . Он позаботится о том, чтобы внутренне отключить захват перед отправкой вам в командную строку отладчика pdb.

92
ответ дан 24 November 2019 в 15:46
поделиться

Я обнаружил, что могу запустить py.test с отключенным захватом, а затем использовать pdb.set_trace () как обычно.

> py.test --capture=no
============================= test session starts ==============================
platform linux2 -- Python 2.5.2 -- pytest-1.3.3
test path 1: project/lib/test/test_facet.py

project/lib/test/test_facet.py ...> /home/jaraco/projects/project/lib/functions.py(158)do_something()
-> code_about_to_run('')
(Pdb)
35
ответ дан 24 November 2019 в 15:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: