2016-07-07 9 views
2

から、実行中のカバレッジ対coverage.pyからテストを実行し、ブライアンとネッドは簡単に実行coverage.pyからテストを実行することが好ましいことを、あなたはカバレッジテストを実行する必要がある場合、議論カバレッジのあるテストランナーを呼び出すのではなく、coverage runです。それはなぜですか?その違いは何ですか?このにいくつかのコンテキストを入れて<a href="http://pythontesting.net/podcast/coverage-ned-batchelder/" rel="nofollow">Coverage.py with Ned Batchelder</a>のpython &テストポッドキャストの間、テストランナー


:現在、私はnoseテストランナーを使用して--with-coverage optionnosetestsコマンドラインツールの助けを借りてテストを実行しています:

$ nosetests --with-coverage --cover-html 

私は経由でそれを行う必要があります代わりにcoverage run -m

$ coverage run -m nose 
$ coverage report 
+1

これが正しいかどうかわかりません(私は答えとして投稿していません)。しかし、あなたが直接カバレッジを使用すると、カバレッジと鼻が関係していると思いますプラグインの追加の依存関係はありません。結合が少なくて済み、追跡するバージョンが1つ少なくなります。 – mwchase

+1

"カバレッジのあるテストランナーを呼び出す" - あなたが話しているテストランナーについては明言していない(そして、ポッドキャストにも載っていないかもしれない - 私はそれには載っていない)。テストランナーの場合は、テストランナーが正しい時間にカバレッジマシンを起動するように(たとえばテストするものをインポートする前に)信頼していると思います。カバレッジを直接呼び出すと、すべてがカバレッジからカバレッジを使用するように設定されていることがわかり、すべての行が必要に応じて追跡されます。 – mgilson

答えて

1

私はこの質問に答えるために独自に資格だと思います:)

mwchaseとmgilsonは、右の彼らのコメントでそれを持っている:プラグインを使用すると、あなたが正しいと理解しているそのプラグインの動作に応じていることを意味します。有用であるという名のもとに、プラグインは独自のロジックを持っていて、それが書かれたときに最も良いアイデアだったかもしれませんが、その間にテストランナーやカバレッジ.pyが変更されている可能性があります。プラグインは他のコンポーネントと同じように保守されていない傾向があります。あなたがそれらを避けることができれば、あなたは考えることが少なくなります。

真実:私がcoverage.pyに機能を追加したいので、.coveragerc設定ファイルのサポートを追加した理由は、それらをサポートするためにプラグインUIが更新されるのを待っていないからです。

+0

なんらかの理由で、「カバレッジ・ラン」を使用することができないと言わず、カバレッジ・プラグインを使用してランナーを使用する方法をインターネット上で「カバレッジ付きノーズ/パイテストを使用する方法」のサンプル・サンプルで紹介しています。より良い方法。再度、感謝します! – alecxe

関連する問題