2014-02-06 2 views
0

nosetests이 새로운 파이썬 인스턴스에서 각 단위 테스트를 실행하도록하려면 어떻게해야합니까?코는 동일한 파이썬 인스턴스를 사용합니까?

이상한 상황이 있습니다. 플러그인을 파생하는 Plugin 기본 클래스 인 __subclasses__()을 기반으로하는 간단한 플러그인 시스템이 있습니다. 내 문제는 nosetests이 모든 단위 테스트를 실행하기 위해 파이썬 인스턴스를 재사용하고 (?), 단위 테스트 중 하나가 다른 것으로 정의 된 플러그인을 "보고"끝내는 결과에서 발생합니다. 파일의

. 
|-- package 
| |-- __init__.py 
| `-- plugin.py 
|-- unit_test_1.py 
`-- unit_test_2.py 

내용은 here을 찾을 수 있습니다 개념 증명을 위해

, 나는 다음과 같은 디렉토리 구조를 가지고있다. 이제 unit_test_1.py 또는 unit_test_2.py을 개별적으로 실행하면 모두 성공합니다. 그러나 nosetests을 사용하여 둘 다 실행하면 __subclasses__() 길이가 2이므로 두 번째 단위 테스트가 실패합니다. 당신은 nosetests --with-isolation를 사용한다

답변

0

:

플러그인 IsolationPlugin 사용 : 는 하나의 테스트 모듈 또는 패키지 외부 모듈에 대한 변경 사항을 분리로 분리 플러그인을 활성화합니다. 격리 플러그 인은 후에 각 테스트 모듈 또는 패키지가 테스트 전의 상태로 실행 된 후 sys.modules의 내용을 다시 설정합니다. 제발 이 플러그인은 커버 리지 플러그인과 함께 사용하면 안되며, 모듈 리로딩이 바람직하지 않은 부작용을 일으킬 수있는 다른 경우에는 을 사용해야합니다.

귀하의 예는 두 가지 테스트를 모두 통과합니다.

+0

어. 나는 질문을하기 전에 고립 시키려고 노력했다. 그리고 나는 예외가 있었다. 그리고 그래, 나도 범위를 사용하고있다 : (이 일을하는 다른 방법은? (나는 내일 - 함께 - 더 - 어쩌면 내가 작동하게 만들 수있다) – Unknown

+0

그것은 커버리지를 얻기가 어려울 것이다. 동시에 여러 인스턴스를 사용하면 여러 번 병합을 처리해야합니다. – Oleksiy