2017-02-07 2 views
3

현재 pytest를 사용하여 테스트 도구를 자동화하고 있습니다. 나는 다음과 같은 여러 디렉토리에 걸쳐 시험이 있습니다pytest : 키워드 옵션 (-k)을 사용할 때 디렉토리 스타일 문자열이 처리되지 않습니다.

|-Root 
| |-Dir1 
| | |-Test1 
| | |-Test2 
| | |-Test3 
| |-Dir2 
| | |-Testa 
| | |-Testb 
| | |-Testc 
| |-Dir3 
| | |-TestI 
| | |-TestII 
| | |-TestIII 

내가 다른 사람을 제외하여 디렉토리의 집합에서 테스트를 실행할 수 있도록하고 싶습니다. 디렉토리 중 일부는 "test_set_1"및 "test_set_1_extended"와 비슷한 이름을 가지고 있습니다. "test_set_1"을 제외하고 싶지만 "test_set_1_extended"를 유지하여 전체 경로를 키워드로 사용해야합니다. 필자는 pytest가 디렉토리 구조 문자열을 인수로 사용하지 않는다는 키워드 (-k 옵션)를 사용할 때 알아 챘습니다.

구문 에러 : 나는 창 스타일을 시도하는 경우 예를 들어,

py.test -k "not (root\dir1 or dir2)" 

나는 구문 오류 얻을 내가 유닉스 스타일을 시도하는 경우 반면에 줄 연속 문자

후 예상치 못한 문자를

py.test -k "not (root/dir1 or dir2)" 

나는 ZeroDivisionError를 얻습니다 :

ZeroDivisionError : i 내가 해봤 제로

것들에 의해 nteger 부문 또는 모듈은 다음과 같습니다 디렉토리의 단일 또는 이중 따옴표 문자열을 묶는 : 별도의 '-k의'를 사용

py.test -k "not ('root/dir1' or dir2)" 
py.test -k "not ("root/dir1' or dir2)" 

을 :

py.test -k "not root/dir1" -k not dir2) 

사용 현재 디렉토리 '.'

py.test -k "not (./root/dir1 or dir2)" 

슬래시를 이스케이프 : 이들의

py.test -k "not (root\\dir1 or dir2)" 
py.test -k "not (root\/dir1 or dir2)" 

없음이 문제를 해결 없었다. 누구 pytest 내 경로 문자열을 올바르게 처리하는 방법에 어떤 제안이 있습니까?

답변

0

매우 비슷한 설정으로 작업 중이며 설명하는 동작 (pytest 3.4.0, python 3.6.4)을 재현 할 수있었습니다.

정확한 레이아웃에 따라 유용한 대안을 찾았습니다. 기본적으로 경로 구분 기호 대신 and을 사용하고 있습니다.

따라서 py.test -k "not (root/dir1 or dir2)"py.test -k "not ((root and dir1) or dir2)"이됩니다. 더 이상 dir1 경로 요소가 root/dir1 아래에 없으면 두 표현식이 동일해야합니다.

/ 등의 식의 동작이 다소 일치하지 않는 것으로 보이므로 (py.test -k root/dir1가 예상대로 작동 함) 버그를 신고하는 것이 좋습니다.

0

왜 자신에게 해결 방법을 저장하지하고 그냥 다른 테스트 그룹에 대한 고유의 마커를 사용하고

py.test -m "not extended" 

테스트/디렉토리/모듈 이름을 변경하고 아무것도 중단 할 수 있습니다이 방법을 사용합니다.

관련 문제