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プログラムを介して、情報を収集します. -mパラメータを使用して、pythonファイル内のエクスポート可能なモジュールを実行することもできます.たとえば、 などです.では、実行中のpythonファイルがあるディレクトリを-source、-include、-omitで指定できます.しかし、この3つのパラメータをrunの後ろに置いて、実行されているpythonファイルの前に置かなければなりません.
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は現在のディレクトリのファイルを収集しません.現在のディレクトリの結果を収集する必要がある場合は、コマンドラインで指定する必要があります.ゞ coverage只会收集.ゞcoverageのファイルは、次の形式のファイルが収集されます.
run-parallel-modeパラメータを使用して、パラメータ独立結果ファイルを実行するたびに、指定した場合に生成される結果ファイル名マシン名、プロセスid、乱数を制御できます.たとえば
異なるマシン上で異なるディレクトリでcoverageを実行して結果ファイルをマージできない場合は、pathsパラメータで違いを指定できます.具体的にはpathsで構成できます.マージ時に結果ファイルが読めない場合は、coverageから警告が出力されます.
結果レポート
は4つのスタイルの出力ファイルフォーマットを提供します.html、xmlコマンドにそれぞれ対応します.コマンドラインのパラメータは一致しています.一連のファイルの一部のファイルの結果を収集したい場合は、特定のファイル名とモジュール名を指定できます.–include–omitパラメータは、正則を使用して収集するファイルを指定できます.-i-ignore-errorの参加を指定して、ファイルが見つからないエラーを無視します.-fail-underは、coverageの結果がこの数値より小さい場合、coverageコマンドはエラーコード2を返しますが、このパラメータはannotateコマンドには無効です.
上書きレポートの概要
最も簡単なレポートは、実行されたロー数、実行されていないロー数、上書き率を含むreportコマンド出力のサマリー情報です.
-mパラメータは、特に実行されていないファイル行を表示することができる.
branch coverageを使用すると、branchの結果はBranchとBrPartの2列に表示されます.たとえば
ファイルを指定して、特定のファイルの結果を表示します.
-skip-coveredパラメータは、上書き率100%のファイルを出力しないことができます.
概要
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つのパラメータがあります.
コマンドの実行
coverage run test.py # python test.py
coverage run -m test.test # test test
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は統計のプロセスに影響を与える警告を生成します.これらの警告には、次のものが含まれます.
実行中にコードが変更された場合、このエラーが報告され、xxxは変更後の名前を表します.
存在しないpythonファイルを使用
実行中のpythonファイルにXXXモジュールは存在しません
主に実行するpythonファイルの中で、1行のコードが実行されていない可能性があります.
結果ファイル
デフォルトでは、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%のファイルを出力しないことができます.