어떻게 든 py.test를 사용할 때 파이썬 디버거로 디버깅 할 수 있습니까?
내 파이썬 프로그램을 단위 테스트하기 위해 py.test를 사용하고 있습니다. 파이썬 디버거로 테스트 코드를 정상적인 방식으로 디버깅하고 싶지만 (코드에서 pdb.set_trace () 의미) 작동하도록 만들 수 없습니다.
코드에 pdb.set_trace ()를 넣는 것은 작동하지 않습니다 (출력이 캡처되는 동안 IOError : stdin에서 읽기 발생). 나는 또한 --pdb 옵션을 사용하여 py.test를 실행하려고 시도했지만 내 주장 이전에 무슨 일이 발생하는지 탐구하고 싶다면 트릭을 수행하지 않는 것 같습니다. 어설 션이 실패하면 중단되며 해당 행에서 이동하면 프로그램이 종료됩니다.
누구든지 디버깅을 얻는 방법을 알고 있습니까? 아니면 디버깅과 py.test가 함께 할 의도가 없습니까?
정말 간단합니다. assert 0
코드에서 디버깅을 시작할 위치를 지정하고 다음을 사용하여 테스트를 실행합니다.
py.test --pdb
완료 :)
또는 pytest-2.0.1 이상을 사용하는 경우 pytest.set_trace()
테스트 코드의 아무 곳에 나 넣을 수 있는 도우미 도 있습니다. 다음은 문서 입니다. pdb 디버거 명령 줄로 보내기 전에 내부적으로 캡처를 비활성화하도록주의해야합니다.
캡처가 비활성화 된 상태에서 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)
가장 쉬운 방법은 py.test 메커니즘을 사용하여 중단 점을 만드는 것입니다.
http://pytest.org/latest/usage.html#setting-a-breakpoint-aka-set-trace
import pytest
def test_function():
...
pytest.set_trace() # invoke PDB debugger and tracing
또는 pytest
의 디버거를 한 줄로 변경하려면 다음 import pdb; pdb.set_trace()
으로 변경하십시오.import pytest; pytest.set_trace()
나는 py.test에 익숙하지 않으며 unittest를 위해 다음을 수행합니다. 아마도 py.test는 비슷합니다.
테스트 모듈 (mytestmodule.py)에서 :
if __name__ == "__main__":
unittest.main(module="mytestmodule")
그런 다음 테스트를 실행하십시오.
python -m pdb mytestmodule.py
대화 형 pdb 셸을 얻게됩니다.
문서를 보면 py.test에 --pdb
명령 줄 옵션 이있는 것 같습니다 .
'Program Tip' 카테고리의 다른 글
XML 속성을 변경하는 방법 (0) | 2020.12.03 |
---|---|
jQuery에서 Join ()은 무엇입니까? (0) | 2020.12.03 |
게으른 로거 메시지 문자열 평가 (0) | 2020.12.03 |
Node.js : 부모 클래스의 범위에 액세스 (0) | 2020.12.03 |
Jasmine에서 JQuery 선택기 감시 (0) | 2020.12.03 |