pythonテストケースオーバーライドツールcoverageチュートリアル(コマンドラインツール)


ブログへようこそ
概要
coverageは、テスト例がすべてのコードに上書きされているかどうかを確認するツールです.
coverageコマンドラインツール
 pip install coverageでcoverageのインストールに成功すると、pythonコマンドの同級ディレクトリにcoverage実行可能プログラムが生成されます.coverageは異なるバージョンのpythonプログラムに対応し、python 2プラットフォームのcoverage 2、python 3プラットフォームのcoverage 3、coverage-X.Y、X、Yがpythonのバージョン番号などの異なるバージョンの実行可能プログラムを生成します.
  coverageコマンドには、coverageの動作を示す5つのパラメータがあります.
  • run-pythonプログラムを実行し、実行データを収集する
  • report-レポート生成
  • html-結果をhtml形式
  • に出力
  • xml-結果をxmlフォーマット
  • に出力
  • annotate-pythonプログラムを実行し、実行データを収集する
  • erase-coverageが収集したデータ
  • を明確にする
  • combine-coverageが収集したデータ
  • をマージ
  • debug-デバッグ情報
  • を取得
  • help-coverageヘルプ情報を表示し、coverage helpアクション/coverageアクション–help、指定したアクションのヘルプ情報を表示します.
  • –rcfile=FILEでコマンド実行時のプロファイルを指定できます.すべてのコマンドラインのパラメータは、プロファイルに書き込むことができます.

  • コマンドの実行
  • coverage runコマンドpythonプログラムを介して、情報を収集します.
    coverage run test.py #     python test.py     
    
  • -mパラメータを使用して、pythonファイル内のエクスポート可能なモジュールを実行することもできます.たとえば、
    coverage run -m test.test   #  test    test  
    
  • などです.
  • では、実行中のpythonファイルがあるディレクトリを-source、-include、-omitで指定できます.しかし、この3つのパラメータをrunの後ろに置いて、実行されているpythonファイルの前に置かなければなりません.
    coverage run --source=project test.py
    

  •   coverageはマルチスレッドのプログラムを処理できますが、multiprocessing,greenlet,eventlet,geventを使用すると、coverageのデフォルトでは処理できませんが、-concurrencyパラメータでプログラムが具体的に使用されているライブラリを示すと処理できます.デフォルトでは、pythonが持参した標準ライブラリos、sysなどのpython解析器のコードはcoverageでも処理されません.これらのシステムライブラリのデータも見たい場合は、-Lパラメータを使用します.統計されるべきコードがいくつかあるが、ない場合は、-timidパラメータを加えてもう一度実行します.これは比較的遅いフォローアップアルゴリズムなので、一般的には使用しません.複数のプロセスまたはマシンがcoverageプログラムを実行する必要がある場合は、-parallel-modを使用してすべてのプロセスの統計データを分離できます.
      coverageを実行すると、coverageは統計のプロセスに影響を与える警告を生成します.これらの警告には、次のものが含まれます.
  • “Trace function changed, measurement is likely wrong: XXX”

  • 実行中にコードが変更された場合、このエラーが報告され、xxxは変更後の名前を表します.
  • “Module XXX has no Python source”

  • 存在しないpythonファイルを使用
  • “Module XXX was never imported”

  • 実行中のpythonファイルにXXXモジュールは存在しません
  • “No data was collected”

  • 主に実行するpythonファイルの中で、1行のコードが実行されていない可能性があります.
  • “Module XXX was previously imported, but not measured.”38762モジュールXXXはcoverage実行時に既に導入されており、彼の実行状況はcoverageに監視されない.

  • 結果ファイル
    デフォルトでは、coverageで生成する結果ファイルは.Coverage、環境変数COVERAGEを変更できます.FILEはこのファイルの接尾辞名を変更します.複数回実行した結果を-aで1つのファイルにマージすることもできます.そうしないと、生成されるたびに結果ファイルは前回実行された結果になります.coverage eraseで空にする前に実行した結果ファイルです.
    結果ファイルのマージ
    複数の結果ファイルをマージするには、まず複数の結果ファイルを同じディレクトリにコピーし、combineオプションを実行すると、複数のファイルを1つにマージできます.coverageファイル
        coverage combine
    

    ファイル名やディレクトリを指定することもできます
        coverage combine data1.dat windows_data_files/
    

    この場合、coverageは現在のディレクトリのファイルを収集しません.現在のディレクトリの結果を収集する必要がある場合は、コマンドラインで指定する必要があります.ゞ  coverage只会收集.ゞcoverageのファイルは、次の形式のファイルが収集されます.
        .coverage.machine1
        .coverage.20120807T212300
        .coverage.last_good_run.ok
    

    run-parallel-modeパラメータを使用して、パラメータ独立結果ファイルを実行するたびに、指定した場合に生成される結果ファイル名マシン名、プロセスid、乱数を制御できます.たとえば
        .coverage.Neds-MacBook-Pro.local.88335.316857
        .coverage.Geometer.8044.799674
    

    異なるマシン上で異なるディレクトリでcoverageを実行して結果ファイルをマージできない場合は、pathsパラメータで違いを指定できます.具体的にはpathsで構成できます.マージ時に結果ファイルが読めない場合は、coverageから警告が出力されます.
    結果レポート
      は4つのスタイルの出力ファイルフォーマットを提供します.html、xmlコマンドにそれぞれ対応します.コマンドラインのパラメータは一致しています.一連のファイルの一部のファイルの結果を収集したい場合は、特定のファイル名とモジュール名を指定できます.–include–omitパラメータは、正則を使用して収集するファイルを指定できます.-i-ignore-errorの参加を指定して、ファイルが見つからないエラーを無視します.-fail-underは、coverageの結果がこの数値より小さい場合、coverageコマンドはエラーコード2を返しますが、このパラメータはannotateコマンドには無効です.
    上書きレポートの概要
      最も簡単なレポートは、実行されたロー数、実行されていないロー数、上書き率を含むreportコマンド出力のサマリー情報です.
    $ coverage report
    Name                      Stmts   Miss  Cover
    ---------------------------------------------
    my_program.py                20      4    80%
    my_module.py                 15      2    86%
    my_other_module.py           56      6    89%
    ---------------------------------------------
    TOTAL                        91     12    87%
    

    -mパラメータは、特に実行されていないファイル行を表示することができる.
    $ coverage report -m
    Name                      Stmts   Miss  Cover       Missing
    -------------------------------------------------------
    my_program.py                20      4    80%   33-35, 39
    my_module.py                 15      2    86%   8, 12
    my_other_module.py           56      6    89%   17-23
    -------------------------------------------------------
    TOTAL                        91     12    87%
    

    branch coverageを使用すると、branchの結果はBranchとBrPartの2列に表示されます.たとえば
    $ coverage report -m
    Name                      Stmts   Miss Branch BrPart  Cover   Missing
    ---------------------------------------------------------------------
    my_program.py                20      4     10      2    80%   33-35, 36->38, 39
    my_module.py                 15      2      3      0    86%   8, 12
    my_other_module.py           56      6      5      1    89%   17-23, 40->45
    ---------------------------------------------------------------------
    TOTAL                        91     12     18      3    87%
    

    ファイルを指定して、特定のファイルの結果を表示します.
    $ coverage report -m my_program.py my_other_module.py
    Name                      Stmts   Miss  Cover   Missing
    -------------------------------------------------------
    my_program.py                20      4    80%   33-35, 39
    my_other_module.py           56      6    89%   17-23
    -------------------------------------------------------
    TOTAL                        76     10    87%
    

    -skip-coveredパラメータは、上書き率100%のファイルを出力しないことができます.