2016-05-18 18 views
5

Używam coverage.py do mierzenia zasięgu kodu moich testów. Włączyłem obsługę oddziału, ale nie mogę zrozumieć raportu.Jak interpretować wyniki pokrycia zasięgu zasięgu pokwitowania Python?

bez pokrycia gałęzi, mam 100% pokrycia:

Name       Stmts Miss Cover Missing 
------------------------------------------------------------ 
mylib/queries.py     44  0 100% 

Dzięki pokryciu oddziału włączona:

Name       Stmts Miss Branch BrPart Cover Missing 
-------------------------------------------------------------------------- 
mylib/queries.py     44  1  20  3 94% 55, 21->10, 53->-48, 59->-58 

danego źródła można znaleźć here.

21->10 ma sens; klauzula if nigdy nie jest równa False (przeskakiwanie do początku zewnętrznej pętli for).

Jednak, 53->-48 i 59->-58 kazali mi drapać się po głowie. Co mieli na myśli?

+0

To prawdopodobnie pusta lista wewnątrz pętli for, więc nigdy nie wykonuje ona kodu wewnątrz pętli. – Dan

+0

Hm, tak, pętle zawsze mają coś do pogryzienia w testowych przypadkach, które dostarczam. Więc brakująca "gałąź" ma miejsce w przypadku pustego zestawu? –

Odpowiedz

7

Komentarz Dana jest bliski. Po pierwsze, liczby ujemne oznaczają wyjście z funkcji zaczynającej się od tego numeru linii. Więc -48 oznacza wyjście z funkcji zaczynającej się od linii 48.

Problem nie jest pusty pętle: te gałęzie miałyby miejsce, gdyby pętle kiedykolwiek zostały zakończone. Wygląda na to, że może nie.

BTW: Coverage.py 4.1b3 zmienił niektóre z tych zachowań: zostały one oznaczone jako 53->exit, 59->exit. Również same gałęzie mogą być identyfikowane w różny sposób. Spróbuj.

+0

Ned, dziękuję za poświęcenie czasu, aby odpowiedzieć na moje pytanie, i dziękuję za ten naprawdę przydatny pakiet. –

+0

Wyjście w 4.1b3 zdecydowanie ma więcej sensu, ale nadal jestem zdezorientowany przez '53-> exit'; linia 53 jest tutaj [pętla for wewnątrz funkcji generatora] (https://gist.github.com/eykd/1d9cbb50f1cae0873bac05e3a20909ea#file-queries-py-L53) i nie jest to właściwie gałąź. czego mi brakuje? –

+0

Twoja pętla for nigdy się nie kończy, więc nigdy naturalnie nie opuszcza tej funkcji. Nie jestem jednak pewien, co robi. Być może wyjątek? –

Powiązane problemy