21

は、私はちょうど私がunittestのカバレッジを使用しているPythonのプロジェクトのためのいくつかのユニットテストを書き始めました。私は現在、私は私のテストを実行し、カバレッジが私がいる問題はカバレッジがあるということである以下のPythonのユニットテストカバレッジ

python -m unittest discover -s tests/ 
coverage run -m unittest discover -s tests/ 
coverage report -m 

を使用して使用します小さな割合をテストしますが、コードカバレッジ

をうまくしようとしています私は44%のコードカバレッジを持っているし、ファイルのみカウントされ伝える:

    1. は(テストされていなかったすべてのファイルは、全体的なカバレッジで行方不明とされていない)ユニットテストでテストしたことにありました図書館仮想環境では、実際のテストのコードカバレッジもあります。確かに結果に実際のテストを含めてはいけませんか?

    さらに、それは私がより現実的なコードカバレッジを取得したりするにはどうすればよい

    (ほとんどの場合、import文である)実際にこれらのユニットテストでテストされたファイルのみ、最初の数行をテストして言いますこれはどういう意味ですか?

  • 答えて

    18

    を提供するために、あなたは、代わりにテストランナーとしてカバレッジプラグインをnoseを使用する場合は、カバレッジ実行ラインに--source=.を追加します。両方とも現在のディレクトリにフォーカスを制限し、まったく実行されなかった.pyファイルを検索します。

    +4

    ありがとう、これは私のために働く! 'coverage run --source = {dir} -m unittest discover -s tests /'は{dir}をカバーします。私は尋ねることができます:(再帰的に)サブディレクトリを通過するのはどうですか? '--source = {DIR1}、{DIR2}、{など}'(カンマ記号の後にスペースをありませんので予めご了承ください): – sunyata

    +0

    は、私はそれが複数のディレクトリ/モジュールを含めるには、このを使用することが可能だということが分かりました。それは場合にかかわらず利用可能である場合、それはまだ新しいモジュールは、ソースコード – sunyata

    +0

    ドキュメントに追加された再帰オプションを使用して有用であろう:([Coverage.pyコマンドラインの使用法https://coverage.readthedocs.io/en/latest/ cmd.html) – sunyata

    1

    それは

    --cover-inclusive  Include all python files under working directory in 
             coverage report. Useful for discovering holes in test 
             coverage if not all files are imported by the test 
             suite. [NOSE_COVER_INCLUSIVE] 
    
        --cover-tests   Include test modules in coverage report 
             [NOSE_COVER_TESTS] 
    
    関連する問題