2013-01-15 3 views
1

파이썬 C/C++ 바인딩을 호출하는 테스트가 많이 있습니다. 우리는 코 테스트를 실행합니다Python 인터프리터에 대한 코 보호 문제가 발생했습니다.

test03_badcode (myapp.tests.test_badcode) ... Segmentation fault 

질문 : 무엇이있다

nosetests myapp 
..... 
---------------------------------------------------------------------- 
Ran 5 tests in 0.009s 

때때로, 우리의 바인딩 테스트 3 번에, 말하자면, 파이썬 인터프리터 충돌을 일으키는 버그가 있음을 발생 이걸 복구하는 가장 좋은 방법은? 이상적으로는, 나는 코 자체가 이라는 충돌을 처리하는 것을 선호하지만, 이것이 실현 불가능하다는 것을 이해합니다. . 내가 생각한 다음 해결책은 테스트를 기록하고 코를 다시 시작하는 것입니다. 이제는 나쁜 테스트를 건너 뜁니다. 내 예에서는 테스트 1, 2, 4 및 5를 실행하는 것이지만 이 아니라 테스트 3입니다. 코를 사용하여 프로그래밍 방식으로이를 달성 할 수있는 방법이 있습니까? 다른 좋은 아이디어가 있습니까?

답변

3

평소 코처럼, 거기에 대한 플러그인이 있습니다. Insulate은 각 테스트를 별도의 프로세스로 실행합니다. 속도가 느려지지만 한 번의 테스트에서 충돌이 다른 테스트에 영향을 미치지 않는다고 보장됩니다.

+0

잘 잡았으나이 플러그인은 건너 뛴 테스트에서 올바르게 작동하지 않습니다. RuntimeError : 마스터/슬레이브 통신에서 프로토콜 오류가 발생했습니다. 그 문제를 쉽게 해결해 줬어? –

+0

모듈을 살펴본 후 건너 뛴 테스트를 지원하는 [플러그인 버전] (https://github.com/idiap/bob/blob/master/python/bob/test/insulate.py)을 만들었습니다. 이것은 우리 빌드에서 올바르게 작동하는 것 같습니다. –

관련 문제