Używam pytest dla mojego zestawu testów. Wyłapując błędy w złożonych testach międzykomponentowych, chciałbym umieścić je import ipdb; ipdb.set_trace()
w środku mojego kodu, aby umożliwić mi debugowanie.
Jednak ponieważ pytest pułapki sys.stdin / sys.stdout ipdb nie działa. Jak mogę używać ipdb podczas testowania z pytest.
Nie interesuje mnie przeskakiwanie do pdb lub ipdb po awarii, ale umieszczanie przerw w dowolnym miejscu kodu i możliwość debugowania go tam, zanim wystąpi awaria.
addopts = -s
dopytest.ini
pliku.pytest-ipdb nie jest już niestety obsługiwane.
Rozwiązaniem jest ucieczka
pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb
Z polecenia pomocy:
Różnica polega tylko na tym, że TerminalPdb wydaje się generować błędy, ale Pdb nie ( dokumentacja Ipython ).
źródło
TerminalPdb
działa ponownie i jest preferowanym rozwiązaniem, ponieważ zapewni ci wypełnienie karty.To jest to, czego używam
py.test tests/ --pdbcls=IPython.core.debugger:Pdb -s
źródło
Od 2019-11 oto, co powinno to naprawić:
źródło
prompt-toolkit
wersję,2.0.10
ipdb znowu będzie działał dobrze, ponieważ zepsuje się z powodu ostatniej aktualizacji tego pakietu do 3.0.0