ipdb를 실행하는 방법.set_pytest 테스트를 실행하는 동안 마음대로 trace()
테스트 스위트에 파이테스트를 사용하고 있습니다.복잡한 부품간 테스트에서 버그를 잡으면서 배치하고 싶습니다.import ipdb; ipdb.set_trace()
디버그를 할 수 있게 하기 위해 제 코드 중간에 말입니다.
그러나 pytest traps sys.stdin/sys.stdout ipdb가 실패합니다.pytest로 테스트하는 동안 ipdb는 어떻게 사용할 수 있습니까?
저는 실패 후 pdb나 ipdb로 점프하는 것에 관심이 없지만, 코드의 어디에나 브레이크를 두고 실패가 발생하기 전에 디버그할 수 있습니다.
pytest가 기본적으로 출력을 캡처하기 때문에 오류가 발생합니다.
Pytest를 실행할 수 있습니다.-s
옵션(캡처 출력 끄기).예를 들어,
py.test -s my_test.py
그 다음에my_test.py
:
import ipdb;
ipdb.set_trace()
안타깝게도 pytest-ipdb는 더 이상 지원되지 않습니다.
해결책은 실행하는 것입니다.pytest my_test.py --pdb --pdbcls=IPython.terminal.debugger:Pdb
help 명령에서 다음을(를)
pytest -h
--pdb start the interactive Python debugger on errors.
--pdbcls=modulename:classname
start a custom interactive Python debugger on errors.
For example:
--pdbcls=IPython.terminal.debugger:TerminalPdb
TerminalPdb는 오류를 던지는 것처럼 보이지만 Pdb는 그렇지 않다는 것이 차이점입니다(Ipython documents).
2019-11년 현재 이 문제를 해결해야 할 사항은 다음과 같습니다.
pip install ipdb gnureadline ptpython
export PYTEST_ADDOPTS='--pdb --pdbcls=IPython.terminal.debugger:Pdb'
이것은 제가 사용하는 것입니다.
py.test tests/ --pdbcls=IPython.core.debugger:Pdb -s
당신은 당신에게 주고 싶을지도 모릅니다.pdbpp
시도해봐요. 저는 그것보다 더 많은 성공을 거뒀습니다.ipdb
와 함께 사용할 경우pytest
. 제 답변을 여기서 보세요: https://stackoverflow.com/a/69320311/2896799 .
언급URL : https://stackoverflow.com/questions/16022915/how-to-execute-ipdb-set-trace-at-will-while-running-pytest-tests
'sourcecode' 카테고리의 다른 글
j테이블 행의 각 루프 쿼리 (0) | 2023.10.21 |
---|---|
Oracle 10g: 열이 비어 있지만 null 또는 빈 문자열은 아닙니다. (0) | 2023.10.21 |
휘발성 구조의 부재를 분리하기 위한 쓰기 순서는 보존이 보장됩니까? (0) | 2023.10.21 |
종료하지 않고 PowerShell 세션 새로 고침/다시 시작 (0) | 2023.10.21 |
mariadb - 테이블 XXX가 엔진에 없습니다. (0) | 2023.10.21 |