Python コードカバレッジ分析ツール Coverage

目次

序章

インストール

コマンドラインの使用

次を使用して API を呼び出します


序章

Coverage は、Python テスト コードの品質を測定するために使用できる Python コード カバレッジ分析ツールです。カバレッジ データをコード実行に取り込むことにより、開発者は回帰テスト対象のコードの脆弱性を発見し、どのコードがテストされていないのかを示すことができます。

カバレッジによって、コードのどの部分がテストされたか、どの部分がテストされていないのか、どのコードが比較的不足しているのかがわかります。カバレッジを使用すると、コードの品質を効果的に向上させ、品質上の問題が発生する可能性を減らすことができます。カバレッジは継続的インテグレーション (CI) および継続的デリバリー (CD) プロセスに簡単に統合でき、品質の問題を早期に特定して解決できます。

インストール

Coverage は Python のサードパーティ ライブラリであり、使用する場合は最初に pip コマンドを使用してインストールする必要があります。
インストールコマンド:

C:\Users\TynamYang>pip インストール カバレッジ
報道の収集
カバレッジをダウンロード中-5.1-cp37-cp37m-win32.whl (204 kB)|████████████████████████████████| 204kB 731kB/秒
収集したパッケージのインストール: カバレッジ
カバレッジ-5.1C:\Users\TynamYang> が正常にインストールされました

インストールが完了すると、インストールされたバージョンが表示されます:coverage-5.1 インストール
完了後にカバレッジを使用する カバレッジを使用するには 2 つの方法があり、1 つはコマンド ラインで使用する方法、もう 1 つはコマンド ラインで使用する方法です。 APIを呼び出しています。テストする必要があるコードの一部を制御するのに便利です。

コマンドラインの使用

1. 基本パラメータ
コマンドラインで使用される共通パラメータ:

  • run – Python プログラムを実行し、実行データを収集します

  • レポート - カバレッジ結果のレポート

  • html – カバレッジ結果のリストを含む HTML ファイルを生成します。

  • json – カバレッジ結果を含む JSON ファイルを生成します

  • xml – カバレッジ結果を含む XML レポート ファイルを生成します。

  • 消去 - 以前に収集されたカバレッジ データを消去します

  • 結合 – 複数のデータファイルを結合します

  • debug – デバッグ情報を取得します

help コマンドを使用してヘルプを表示できます。

カバレッジヘルプ

2. コードを実行して情報を収集します

カバレッジを利用する場合、基本的にソースコードを実行してテスト対象のソースコードのカバレッジ情報を収集し、コードカバレッジ情報レポートを生成するという2段階の操作が必要になります。
次のテストコード:

#test.py
# coding:utf-8
import unittest
def add_numb(a, b):
    return a + b
def division_numb(a, b):
    return a / b
class Test(unittest.TestCase):
    def test_add_1(self):
        self.assertEqual(add_numb(1,1), 2)
    def test_add_2(self):
        self.assertEqual(add_numb(2,0), 1)
    def test_division_1(self):
        self.assertEqual(division_numb(2,1), 2)
    def test_division_2(self):
        self.assertEqual(division_numb(2,0), 2)
if __name__ == "__main__":
    unittest.main(verbosity=2)

次のコマンドで実行します。

coverage run test.py
C:\Users\TynamYang\Desktop> カバレッジ実行 test.py
test_add_1 (__main__.Test) ... OK
test_add_2 (__main__.Test) ... 失敗
test_division_1 (__main__.Test) ... OK
test_division_2 (__main__.Test) ... エラー

================================================= ====================
エラー: test_division_2 (__main__.Test)
-------------------------------------------------- --------------------
トレースバック (最後の呼び出し):
ファイル「test.py」、22行目、test_division_2
self.assertEqual(division_numb(2,0), 2)
ファイル「test.py」、9 行目、division_numb 内
a / b を返す
ZeroDivisionError: ゼロ除算

================================================= ====================
失敗: test_add_2 (__main__.Test)
-------------------------------------------------- --------------------
トレースバック (最後の呼び出し):
ファイル「test.py」、test_add_2 の 16 行目
self.assertEqual(add_numb(2,0), 1)
アサーションエラー: 2 != 1

-------------------------------------------------- --------------------
0.003 秒で 4 つのテストを実行

失敗 (失敗=1、エラー=1)
PS C:\Users\TynamYang\Desktop>

コードが実行されると、カバレッジ統計結果ファイル .coverage が生成されます。ファイル名は、COVERAGE_FILE 環境変数を設定することで変更できます。

3. レポートの生成

レポートを表示するには 2 つの方法があります。1 つは現在のコマンド ライン モードで表示する方法、もう 1 つは表示用の HTML レポート ファイルを生成する方法です。
コマンド ライン モードでの表示
コードの実行後に生成された .coverage ファイルに従って、report パラメーターを使用してカバレッジ統計の結果をコマンド ライン モードで表示します。
次のコマンドを使用します。

coverage report
PS C:\Users\TynamYang\Desktop> カバレッジ レポート
名前 Stmts ミス カバー
------------------------
テスト.py 16 0 100%
PS C:\Users\TynamYang\Desktop>

結果から、実行された test.py ファイルのコード カバレッジ率が 100% であることがわかります
。結果表示内のフィールドの意味は次のとおりです。

  • tmts: ステートメントの総数

  • Miss: 実行されなかったステートメントの数

  • Cover:カバレッジ、計算式 Cover=(Stmts-Miss)/Stmts

HTML レポート ファイルの生成
HTML レポートを生成するには、次のコマンドを使用します。

coverage html -d covhtml

パラメータ -d には生成された html が格納されているフォルダ名を指定し、
コマンドを実行すると covhtml ファイルが生成されます。

Index.html ファイル内のカバレッジ データ統計。
いくつかの例も参照してください: Cog カバレッジ

各フィールドの説明:

  • Stmts 有効なコード行数の合計(空白行、コメント行を除く)

  • Miss 実行されなかったコードの行数 (空白行とコメント行を除く)

  • 支店総支店数

  • BrMiss 実行されなかった分岐の数

  • カバーコードカバレッジ

  • Missing ソースファイル内で実行されないコード部分の行番号

実行されたテストの元のファイルにちなんで名付けられたファイルは、カバーされたコードとカバーされていないコードの両方を強調表示できます。test_py.html など。
いくつかの例も参照してください

次を使用して API を呼び出します

ドキュメントを使用するには API を呼び出します: http://coverage.readthedocs.org/en/latest/api.html
Python コードでは、コード カバレッジ モジュールを呼び出してコードを実行することによって、コード カバレッジの統計結果が生成されます。次の例に示すように、使用方法も非常に簡単です。

if __name__ == "__main__":
    # 实例化对象
    cov = coverage.coverage()
    # 开始分析
    cov.start()
    suite = unittest.defaultTestLoader.discover(os.getcwd(), "test.py")
    unittest.TextTestRunner().run(suite)
    # 结束分析
    cov.stop()
    # 结果保存
    cov.save()
    # 命令行模式展示结果
    cov.report()
    # 生成HTML覆盖率报告
    cov.html_report(directory='covhtml')

私もここに来た者として、皆さんが寄り道をしないように、少しでもお役に立てれば幸いです。(WEB 自動テスト、アプリ自動テスト、インターフェイス自動テスト、継続的インテグレーション、自動テスト開発、大規模な工場面接の質問、履歴書のテンプレートなど)、より良い進歩をもたらすことができると信じています。 

[自動テスト] [自動テスト通信]: 574737577 (コメント ccc) icon-default.png?t=N5F7http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=hyGITtX0cD6EN96WzR_d5b1qRSZ-Dpyy&authKey=76TmCzaAQ%2BOwLn6umFFZeVxKheS のままにしておきます。 wyaUVwymd %2FRvdARY6cvCSCgZ1qOSe3w% 2Bsh61f&noverify =0&グループコード=574737577

 

おすすめ

転載: blog.csdn.net/Free355/article/details/131287280