2

Python スクリプトの実行範囲を理解しようとしています。無限ループを持つ単純なスクリプトのカバレッジを実行しようとするシナリオを理解できません。

#!/usr/bin/python

print "The only statement!!!"

while True:
    pass

このスクリプトのカバレッジを呼び出した後、このプロセスを強制終了します。これは無限ループであるためです。結果を取得しようとすると、次のようになります。

  1. カバレッジ実行 sample.py
  2. サンプルを殺す
  3. カバレッジ レポート -m

Name Stmts Miss Cover Missing -------------------------------------

カバレッジ レポートが届きません。私は根本的に間違ったことをしていますか?

4

1 に答える 1

5

coverageプログラムの最後にデータを書き出せる必要があり、終了シグナルを処理できない場合はレポートを生成しません。

したがって、プロセスを強制終了する方法とシグナルを処理する方法に依存しますcoverage-Ctrl + Cを使用して(つまり、SIGINTを送信して)割り込みを行うと、うまく機能しますsample.py

$ coverage run sample.py
The only statement!!!
Traceback (most recent call last):
  File "sample.py", line 5, in <module>
    while True:
KeyboardInterrupt

$ coverage report -m
Name     Stmts   Miss  Cover   Missing
--------------------------------------
sample       3      0   100%

オプションなしでユーティリティを使用している場合はkill、デフォルトで SIGTERM を送信していますkill -INT <pid>。代わりに試してください。

于 2014-08-26T10:16:27.980 に答える