テストの実行時間を出力し、py.testを使用して遅いテストをピン留めする


117

py.testを使用してCIサーバーで単体テストを実行しています。テストでは、ネットワーク経由で取得した外部リソースを使用します。テストランナーに時間がかかりすぎて、テストランナーが中止される場合があります。ローカルで問題を繰り返すことはできません。

py.testが(遅い)テストの実行時間を出力するようにして、問題のあるテストを簡単に特定できるようにする方法はありますか?

回答:


170

これで問題が解決するかどうかはわかりませんが、テストスイートが完了した後で合格--durations=Nすると、最も遅いNテストを印刷できます。

--durations=0すべてを印刷するために使用します。


88
あなたが渡すと--durations=0ALLテストの実行時間を報告します。
oLas 2017年

生成されたHTMLカバレッジレポートに追加する可能性があるかどうか知っていますか?.coveragerc内容でファイルを追加するような同様に、[run] branch = True分岐カバレッジ情報を追加しますか?
Martin Thoma

その情報を自分で追加する必要があります。pytest-htmlは追加のコンテンツを挿入するためのサポートを備えています。
Bruno Oliveira

4
@oLas:それは真実ではありません:テストが「速すぎる」場合、測定された時間は明らかに0になる可能性があり、それらはまだフィルターされます。この場合、負のしきい値も役に立ちません。このアプローチのもう1つの問題は、pytestが常に出力される(0.00 durations hidden. Use -vv to show these durations.)ため、意味がありません。
bluenote10 2018年

17

あなたは番号を渡すことができます --durations

pytest --durations=0 — Show all times for tests and setup and teardown

pytest --durations=1 — Just show me the slowest

pytest --durations=50 — Slowest 50, with times,  etc

参照してください: ください https //medium.com/@brianokken/pytest-durations-0-show-all-times-for-tests-and-setup-and-teardown-848dccac85db

または:https : //docs.pytest.org/en/latest/usage.html#profiling-test-execution-duration

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.