2014-12-28 3 views
3

코 유닛 테스트를 작성하면 상당히 완벽하지만 결과적으로 실행하는 데 시간이 걸릴 수 있습니다. 테스트의 빠른 버전을 실행하기 위해 선택적 명령 줄 인수를 전달할 수 있기를 바랄 수 있습니다 (가능한 모든 입력 대신 소수의 가능한 입력 시도). 인수를 nosetest에 전달

nosetest --quick my_module/tests/my_test.py

그리고 my_test.py에서

이 있습니다 :이 작업을 수행 할 수있는 간단한 방법이

def test_something(): 
    if nose.command_line_args.quick: 
     <run quick test> 
    else: 
     <run long test> 

있습니까

이상적으로는, 내가 뭔가처럼 말할 수있을 것? 한 가지 방법은 코 플러그인을 작성하는 것일 수도 있지만 docu가 setuptools를 사용하여 작성한 플러그인을 설치해야한다고 말하면 겁 먹었습니다. 노우트 플러그인을 설치하기 위해 setuptools를 배우는 것만으로도 플래그를 전달할 수 있습니다. 필자가 할 수만 있다면 피하는 것을 좋아할 것입니다.

+0

과 같은 그룹을 선택적으로 실행할 수 있습니다. 조명기를 개별 모듈로 이동하고 env 변수를 사용하여 전환 할 수 있습니까? – elias

답변

5

좋은 방법은 테스트를 attributes으로 꾸미고 그룹으로 나누는 것입니다. 신속하고 고립 된 테스트를위한 '단위'와 더 장기간에 걸친 철저한 테스트를위한 '통합'이 있다고 해봅시다. nose -a attrname

+0

귀하의 링크에서 이것은 nosetest 작성자가 권장하는 방법 인 것 같습니다. 감사! – SuperElectric

+0

당신은 오신 것을 환영합니다. 이 기능은 모든 테스트 프레임 워크에 유용하며 실제로 유용합니다. 단일 테스트 또는 테스트 패키지를 실행 해 봅시다. 노즈 구현은 지금까지 내가 보아온 것이 가장 좋습니다. 심지어 태그/속성을 결합 할 수도 있습니다! – dmitrybelyakov

+0

그러나 모든 테스트를 실행하고 일부 인수를 전달할 때이 문제가 해결되지 않습니다. 내 경우에는 메신저 변수로 테스트 도메인에 전달합니다. – raitisd

5

nosetests은 사용자 지정 명령 줄 옵션을 추가 할 수있는 방법을 제공하지 않는다고 생각합니다. 물론 사용자 지정 코드를 편집하여 코드를 사용자 지정할 수 있지만 실용적이지는 않습니다.

전형적인 Unixy 쉘 그러나, 당신은 주어진 명령에 대한 즉시 환경 변수를 설정할 수 있습니다
$ NOSEQUICK=1 nosetests my_module/tests/my_test.py 

다음 코드에서 당신이 if os.getenv('NOSEQUICK', ''):를 확인할 수 있습니다.