면책 조항; 초급 질문!별도의 파일 단위 테스트에서 "코드 실행"을보고하지만 "코드 적용 대상"이 아닌 코드 적용 범위
Project/
|-- main.py
|-- test_main.py
지금은 테스트에 포함 된 방법 내 코드를 많이보고 싶어 Jeff Knupp's blogpost on unit testing을 읽고 시험의 구색을 작성 후 : 높은 질문을 위해 단순화
내 프로젝트 구조는 다음과 같습니다 . 그래서 coverage.py를 설치하고 다음 날 혼란 :
$ 범위 보고서 main.py
이름 (스크립트에서 로그인/나에게 인쇄를 보여줍니다)
$ 커버리지 실행 main.py , Stmts, 미스, 커버
main.py, 114, 28, 75 %
것은 내가 메인 스크립트 내에서 단위 테스트를 실행도하지 않았다 않습니다이며, 나는해야한다고 생각해. 나는 수동으로 test_main.py에서 모든 테스트를 실행하고 커밋 전에는 이 아니고이 내 모든 명령문의 75 %를 차지한다는 사실을 알고있다. coverage documentation을 읽은 후 내 단위 테스트 구현을 의심하고 있습니다 ... 테스트를 실행하는 main.py에서 트리거가 필요합니까?
$ 범위 보고서 test_main.py
(나 모든 테스트에 대한 'OK'테스트 실행을 보여줍니다)$ 커버리지 실행 test_main.py :
그래서 난 내 테스트 스크립트에서 같은 시도이름, Stmts, 미스, 커버
test_main.py, 8, 0, 100 %
하지만이 스크립트를 실행하는 동안 테스트 문에서 내 코드의 100 %를 "맞았습니다"라고 간단히 보여줍니다. 그렇다면 어떤 코드가 사용되었는지 단순히 표시하는 경우 적용 범위가 "increase test coverage" 인 이유는 무엇입니까?
내 main.py의 상당 부분이 test_main.py에 의해 보호되고 있으며 몇 가지 기본 개념이 빠져 있음을 알고 싶습니다. 누군가가 정교 할 수 있을까요? 내 우분투 머신을 실행에
"커버리지 실행 test_main.py, 커버리지 보고서는"단지 나에게 test_main.py에 대한 보고서를 제공합니다. 내 Windows 시스템이 제공 :
이름, Stmts, 미스, 커버
main.py, 114, 74, 35 %
test_main합니다.평, 8, 커버리지 보고서는 여전히 이해가되지 않습니다
0, 100 %
TOTAL, 122, 74, 39 %는 :
는- test_main 9 밖으로 커버 코드의 134 라인과 주요 커버리지에서 10 기능 중 하나가 35 %가 아니다.
- 왜 이것이 test_main의 커버리지를보고하는 것인가? 이것들은 테스트이며 이것이 100 % 모든 테스트를 실행하여 내 cov를 확인합니다. erage ...
- 나는 여기에 뭔가 잘못하고있다. 코드 자체로 테스트를 합산하는 동안 통찰력을 얻지 못하고 초보자 의견이 틀리면 "커버리지"의 평균을 계산하는 bollocks를 보게된다.
코드를 보지 않고도 대답하기가 어렵습니다. 모든 coverage.py는 실행 한 코드와 실행할 수있는 코드를 알려주고 차이점을 보여줍니다. 두 개의 보고서를 보았습니다. 둘 다 main.py에 대한 것이지만 첫 번째 보고서에는 114 개의 명령문이 있고 두 번째 보고서에는 8 개의 명령문이 있다고 표시됩니다. 그건 바뀌면 안된다. 세부 사항을 재확인 할 수 있습니까? –
@NedBatchelder 죄송합니다. 작은 실수 - 하단 보고서는 test_main.py와 관련이 있습니다. 나는 여전히 * 테스트 * 컨텍스트에서 커버리지가 얼마나 유용한 지 이해하지 못하고, 어떤 코드가 실행되지 않거나 다른 용도로 사용되는지를 확인하는 데 유용하다. 단위 테스트를 통해 내 코드의 일부가 * 다루어지는 (따라서 내가 생각한 범위 ...) 통찰력을 원하지만, 이것은 단순히 어떤 코드가 2 개의 개별 보고서에서 실행되었는지를 보여줍니다. 그래서 내가 cover.py로 원하는 것을 성취 할 수있는 유일한 방법은 test_main.py에 모든 main.py 코드를 복제하고 스크립트 내에서 테스트하는 것입니다. – MarcelTon
coverage.py를 사용하여 테스트 슈트의 실행을 측정합니다. 그런 다음 제품 코드에서 실행 된 줄과 실행되지 않은 줄을 알려줍니다. 이렇게하십시오 : "coverage run test_main.py; coverage report". 보고서를 하나의 파일로만 제한하지 않으려면 범위 보고서에 파일 이름을 넣지 마십시오. –