私は現在、モックライブラリを使用してPythonでいくつかの基本的なノーズユニットテストを作成しようとしています。
いくつかの基本的な例を終えた後、私は今使用しようとしました、nosetests --with-coverage
そして今私はモックパッケージを持っています、そして私が「モックアウェイ」しようとしたパッケージはカバレッジレポートに示されています。これらを除外する可能性はありますか?
テストしたいクラスは次のとおりです。
from imaplib import IMAP4
class ImapProxy:
def __init__(self, host):
self._client = IMAP4(host)
そしてテストケース:モックインポートパッチから
from ImapProxy import ImapProxy
class TestImap:
def test_connect(self):
with patch('ImapProxy.IMAP4') as imapMock:
proxy = ImapProxy("testhost")
imapMock.assert_called_once_with("testhost")
次の出力が得られますnosetests --with-coverage
.
Name Stmts Miss Cover Missing
------------------------------------------
ImapProxy 4 0 100%
imaplib 675 675 0% 23-1519
mock 1240 810 35% [ a lot of lines]
これらのパッケージを除くすべてのパッケージを手動でホワイトリストに登録せずに、モックパッケージとimaplibパッケージを除外する方法はありますか?--cover-package=PACKAGE
Ned Batchelderのおかげで、.coveragercファイルについて知ることができました。ありがとうございます。
次の内容の.coveragercファイルを作成しました。
[report]
omit = *mock*
これで、カバレッジレポートのモックの出力は次のようになります。
mock 1240 1240 0% 16-2356
モックパッケージはカバーされなくなりましたが、レポートには表示されます。
これが助けになる場合は、Coverage.pyバージョン3.5.2を使用します。