pdb.set_trace ()로 인해 nosetest가 중지되고 디버거로 떨어지지 않습니다.
nosetests를 사용하여 테스트 모음 (.py 파일)을 실행하고 있습니다. 클래식 사용
import pdb; pdb.set_trace()
코 테스트 실행은 결코 완료되지 않습니다. 중단 점이 설정된 곳에서 바로 중단되지만 pdb 디버거로 떨어지지 않습니다.
이것이 왜 그런지 아이디어가 있습니까? 중단 점을 여러 다른 위치 (다른 테스트 기능, 다른 파일)로 이동하여 아무 소용이 없도록 시도했습니다.
-s
/ --nocapture
옵션으로 nose를 실행 하면 pdb 프롬프트를보고 정상적으로 디버거와 상호 작용할 수 있습니다.
명령 줄을 사용하는 경우 다음을 의미합니다.
python manage.py test -s [other-opts-and-args]
Nose는 출력을 캡처하고 리디렉션합니다. 그래서, 중단 점이 적중되었지만 여러분은 그것을 볼 수 없습니다. 디버그 출력이 화면에 표시되도록 출력 리디렉션을 꺼야합니다.
다음을 사용하면 코가이 작업을 수행 할 수 있습니다.
from nose.tools import set_trace; set_trace()
대신에:
import pdb;pdb.set_trace()
제 경우에는 플래그 -s /-nocapture 플래그가 여전히 문제를 해결하지 못하고 컴파일러를 pdb에 놓았습니다.
살펴볼 수있는 또 다른 이유는 MySQL과 같은 데이터베이스를 테스트의 일부로 사용하는 경우 다른 동시 프로세스에 의해 잠겨 있지 않다는 것입니다. 제 경우에는 SQL Alchemy를 통해 MySQL 데이터베이스를 쿼리하기 위해 Python 셸을 시작했으며 테이블을 잠갔습니다. 그 결과, 내 코 테스트가 멈췄습니다.
나는 테이블을 잠그는 파이썬 프로세스를 죽였고 Nose는 스니핑을 백업했습니다.
> $ ps auxww | grep 파이썬 | awk '{print $ 2}'| sudo xargs kill -9
'programing' 카테고리의 다른 글
diff의 오류 종료 값은 무엇입니까? (0) | 2021.01.15 |
---|---|
similar_text는 어떻게 작동합니까? (0) | 2021.01.15 |
Mac OSX의 Dock에 Java Coffee Cup 아이콘이 표시되지 않도록 중지 (0) | 2021.01.14 |
pushState : 상태 객체는 정확히 무엇입니까? (0) | 2021.01.14 |
mongodb에서 findOne을 사용하여 최대 ID를 가진 요소 가져 오기 (0) | 2021.01.14 |