2016-05-18 28 views
5

私はcoverage.pyを使ってテストのコードカバレッジを測定しています。私はブランチカバレッジを有効にしましたが、私はそのレポートを理解できません。問題のソースはhereを見つけることができますPython coverage.pyブランチカバレッジの結果をどのように解釈すればよいですか?

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

:ブランチカバレッジを有効にして

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

:ブランチカバレッジなし

は、私は100%のカバレッジを取得します。

21->10は意味をなさない。 if節はFalseに評価されることはありません(外側のforループの先頭にジャンプする)。

しかし、53->-4859->-58には私の頭が傷ついています。彼らはどういう意味ですか?

+0

これはおそらくループ内のコードを実行しないように、forループ内の空のリストです。 – Dan

+0

ええ、ええ、ループは、私が提供しているテストケースではいつも噛みつくものがあります。だから欠けている "ブランチ"は空のセットの場合ですか? –

答えて

7

Danのコメントは近いです。まず、負数はその行番号から始まる関数の終了を意味します。したがって-48は、48行目から関数が終了することを意味します。

問題は空ではありません。ループ:ループが完了していれば、それらの分岐が起こっていました。おそらく彼らはそうしなかったように見えます。

ところで:Coverage.py 4.1b3では、この動作の一部が変更されました。53->exit, 59->exitとマークされます。また、ブランチ自体が異なって識別される可能性があります。試してみる。

+0

Ned、私の質問に答える時間をとってくれてありがとう、本当に便利なパッケージに感謝します。 –

+0

4.1b3の出力は間違いなく意味がありますが、私はまだ '53-> exit'と混乱しています。ここの53行目は[Generator関数のfor-loop](https://gist.github.com/eykd/1d9cbb50f1cae0873bac05e3a20909ea#file-queries-py-L53)であり、実際には分岐ではありません。私は何が欠けていますか? –

+0

あなたのforループは決して終了しないので、自然に関数を終了することはありません。しかし、私はそれが何をしているのか分からない。おそらく例外ですか? –

関連する問題