2017-01-31 5 views
1

누락 된 행과 분기를보고하는 테스트를 얻으려고합니다. 나는 nose2와 coverage를 설정하여 회선과 분기 커버리지를 생성하고, 내가 누락 된 회선과 분기를 제공하도록 올바르게 커버리지 설정을 설정했다고 말할 수있다. 그러나 nose2에서 실행할 때 누락 열을 제공 할 수있는 범위를 얻을 수 없지만 직접 실행하면 할 수 있습니다.nose2에서 누락 된 행 및 분기를 가져올 수 없습니다.


내 프로젝트 디렉토리에서 다음 설정을 고려하십시오. .coveragerc의

my_module/ 
    __init__.py 
    main.py 
tests/ 
    test_a_thing.py 
unittest.cfg 
.coveragerc 

내용에서 볼 수 있듯이 내 nose2 명령

(example_venv) [email protected][11:30:53]:/space/test_example$ python -m nose2 -c unittest.cfg --no-user-config 
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 
----------- coverage: platform linux, python 3.5.2-final-0 ----------- 
Name     Stmts Miss Branch BrPart Cover 
--------------------------------------------------------- 
my_module/__init__.py  0  0  0  0 100% 
my_module/main.py   4  1  2  1 67% 
--------------------------------------------------------- 
TOTAL      4  1  2  1 67% 

의 unittest.cfg

[coverage] 
always-on = True 
coverage = my_module 
coverage-config = .coveragerc 

출력의

[run] 
branch = True 

[report] 
show_missing = True 

내용이있다 내게 주어진 Branch cov 그 누락 된 가지들을 말하지 않았어.

단순히 (콧물 후에 남겨진 생성 .coverage 파일) coverage report을 실행하면

(example_venv) [email protected][11:34:15]:/space/test_example$ coverage report 
Name     Stmts Miss Branch BrPart Cover Missing 
------------------------------------------------------------------- 
my_module/__init__.py  0  0  0  0 100% 
my_module/main.py   4  1  2  1 67% 3, 2->3 
------------------------------------------------------------------- 
TOTAL      4  1  2  1 67% 

당신은 그 범위가 나에게 누락 된 지점을 부여하고있다 볼 수 있습니다.


nose에서 실행할 때 다음 분기 커버리지 통계 보고서에서 사라지고, .coveragerc[run] 섹션에서 branch = True 라인을 제거하는 경우 때문에 나는, nose2에서 실행할 때 coverage.coveragerc을 따기 것을 알 수 있습니다. 내가 뭔가 특별한 누락


암은 나는 그것이 nose2에서 실행되는 경우 coverage에 전달하려면이 show_missing 설정을 얻기 위해 수행 했어야 해요? 닥터 - nose2위한하여 unittest.cfg[coverage] 섹션 (또는 다른 --config [CONFIG], -c [CONFIG] 파일)에 coverage-report = term-missing을 추가 할 수있다;

버전

cov-core==1.15.0 
coverage==4.3.4 
nose2==0.6.5 

답변

1

TL을 설치했습니다. show_missing = True


coverage에 대한 긴 설명을 전달하는 Cov-Core 위해서는 명령 행 인수에서 재정의하지 않는 한

명령 줄에 coverage report를 실행 show_missingNonecoverage.coverage() *로 전달됩니다.

그러나 nose2show_missingTrue 또는 False 하나로서 cov_core.CovController.summary()coverage.coverage() *에 전달되는, cov-core 이용한다.다음과 같은 논리에 근거 :

if 'term' in self.cov_report or 'term-missing' in self.cov_report: 
    show_missing = 'term-missing' in self.cov_report 
    self.cov.report(show_missing=show_missing, ignore_errors=True, file=stream) 

cov_reportcoverage-report 설정이 nose2에서 설정 한 것입니다.

그래서 이것이 내가 선/지점 누락 산출하기 위해 coverage의 CONFIGS를 사용하려고했기 때문에 내 혼란이다하거나, 별도의 보고서와 같은 Cov-Core 취급을 ((용어에 보고서를 수행 할 때, show_missing에 대한 여분의 플래그있다) 일반 범위를 얻으려면 term을보고하고 일반 범위 + 누락 된 줄을 얻으려면 term-missing을보고하십시오.

Cov-Core이 대부분의 다른 비트 (포함/제외 분기 커버리지)가 여전히 coverage의 configs에 의해 구동 될 때 덮어 쓰기로 결정한이 커버리지 동작 비트에 물리지 않도록하십시오.


는 coverage.coverage *()는 거꾸로 조정할 호환성이며 coverage.control.Coverage()에 대해 (따르면/__ init__.py에) 실제로 가져 오기이다