2

私はcoverage.pyをいじくり回してきましたが、__main__モジュールのカバレッジを収集するためにそれを取得できないようです。

私はWindowsを使用しており、IDLEを使用してスクリプトをハックするのが好きです。edit-hit-F5サイクルは本当に便利で、速く、そして楽しいです。残念ながら、coverage.pyはメインモジュールのカバレッジを収集できる(または進んで)ようには見えません。以下のコードでは、データが収集されていないことを報告しています。私のコードは次のようになります。

import coverage
cov = coverage.coverage()
cov.start()

def CodeUnderTest():
  print 'do stuff'
  return True

assert CodeUnderTest()

cov.stop()
cov.save()
cov.html_report()

誰かアイデアはありますか?私はカバレッジにさまざまなオプションを試しましたが、役に立ちませんでした。sys.modules['__main__']IDLEが作成する環境は、実行中のファイルではなく、idle.pywファイルを指しているため、カバレッジに対してあまり友好的ではないようです。

4

1 に答える 1

1

表示されている動作については説明していませんが、CodeUnderTestの2行はカバーされていると表示されると思いますが、ファイル内の他の行はカバーされていません。Coverage.pyは、開始前に発生した実行を測定できません。ここでは、モジュールが実行されるまで開始されません。たとえば、import coverageカバレッジが開始されるまでに、回線はすでに実行されています。さらに、カバレッジが開始されると、測定が実際に開始されるのは次の関数呼び出しまでではありません。

Coverage.pyを実行する最も簡単な方法は、コマンドラインから使用することです。そうすれば、それができるだけ早く開始していることがわかります。

$ coverage run my_prog.py arg1 arg2 ...

プログラムで使用する必要がある場合は、カバレッジの開始後に呼び出される関数内で関心のあるすべての実行が行われるようにファイルを配置します。

于 2012-02-06T14:05:57.780 に答える