py.test
の繰り返し実行を高速化する方法はありますか?コマンドラインで実行するファイルを指定しても、テストを収集するのに多くの時間を費やすようです。すべての.pyファイルでPyflakesを実行するのが非常に高速であるため、ディスク速度の問題ではないことが分かります。py.testをスピードアップする方法
答えて
pytest.iniまたはtox.iniのnorecursedirs
オプションを使用すると、作業ディレクトリにある他のファイルに応じて、多くの収集時間を節約できます。 300回のテストでは、収集時間が約半分になります(0.34秒対0.64秒)。
私は好きですが、すでにtoxを使用している場合、あなたは自分のtox.iniに以下を追加する必要があります。
[pytest]
norecursedirs = docs *.egg-info .git appdir .tox
あなたはまた、自立pytest.iniファイルに追加することができます。
pytestのマニュアルはmore details on py.test configuration filesです。
さらに(あるいは代わりに) 'testpaths'を設定する必要があります。つまり、' testpaths = src/tests'です。 '.git'、' .tox'などをスキップする必要はありません。 – blueyed
私はプロジェクトのルートにpy.test
と呼んでいたのと同じ問題を抱えていました。私のテストでは3つのサブディレクトリがダウンしていました。このコレクションは、実際のテスト実行の0.4秒前に6〜7秒かかっていました。
私のソリューションは、最初にテストへの相対パスでpy.test
を呼び出すことだった。それを行うこともあなたのコレクションをスピードアップした場合
py.test src/www/tests/
、あなたはaddopts
の最後にテストへの相対パスを追加することができますあなたのpytest.ini
に設定する - 例えば:
[pytest]
addopts = --doctest-glob='test_*.md' -x src/www/tests/
これはダウン1秒程度にコレクション+実行時間を落とし、私は前にあったように私はまだちょうどpy.test
を呼び出すことができます。
より良い方法は、 'testpaths'、すなわち' testpaths = src/www/tests'を使ってこれを設定することです。 – blueyed
xdistを使用すると、py.testの実行を並列化できます。リモートマシンにテストを出荷することさえできます。あなたの設定に依存してかなり高速化することができます:)
cygwinのpythonで動作している特別なケースでは、UNIXスタイルのファイル処理が遅いです。その特別な状況で物事をスピードアップする方法については、pytest.py test very slow startup in cygwinを参照してください。
ウイルス対策ソフトウェアが動作している場合は、電源を切ってみてください。私はまったく同じ問題を抱えていました。テストの収集は非常に遅くなりました。それは問題を引き起こしていた私のアンチウィルスソフトウェア(Avast)であることが判明しました。ウイルス対策ソフトウェアを無効にすると、テストコレクションは約5倍高速に実行されました。私は数回それをテストし、ウイルス対策をオンまたはオフにしていたので、私はそれが私の場合の原因であることは間違いありません。
- 1. navmeshagentをスピードアップする方法
- 2. javax.json.stream.JsonGeneratorをスピードアップする方法?
- 3. CKEditorをスピードアップする方法
- 4. イメージをスピードアップする方法
- 5. WebRequestsのスピードアップ方法
- 6. MLTフレームワーク。ビデオをスピードアップする方法は?
- 7. html5ゲームをスピードアップする方法
- 8. マクロをスピードアップする方法は?
- 9. Pythonの実行をスピードアップする方法
- 10. 角2のウェブサイトをスピードアップする方法
- 11. Pythonでスクレイピングをスピードアップする方法は?
- 12. tesseractをスピードアップする方法OCR
- 13. herokuローディングレールアプリをスピードアップする方法
- 14. 中国でDrupalをスピードアップする方法
- 15. SQLでクエリをスピードアップする方法
- 16. ラテンハイパーキューブ(LHS)デザインのスピードアップ方法
- 17. Javascriptゲームエンジンのスピードアップ方法
- 18. py.testをdoctestsと通常のテストディレクトリを実行する方法は?
- 19. py.test fixturesをインポートせずに使用する方法
- 20. py.test:フィクスチャからテストを生成する方法
- 21. Tox/Py.testで完全なPython Tracebackを表示する方法
- 22. py.testセッションのフィクスチャ値を出力する方法
- 23. py.testフレームワークでテストスクリプトのconfig.optionコマンドライン引数にアクセスする方法
- 24. py.testでsetup.pyの "No commands supplied"を避ける方法
- 25. どのpy.testアサーションエラーでもメソッドを呼び出す方法は?
- 26. Picasa PhotoQueryをスピードアップする方法はありますか?
- 27. notify_allからウェイクアップをスピードアップする方法はありますか?
- 28. PythonとPygameをスピードアップする方法はありますか?
- 29. このmysqlをスピードアップする方法はありますか?
- 30. WiXビルドをスピードアップする方法はありますか?
「収集」段階が遅いのは確かですか? py.testを '--collectonly'で実行してみてください。 – alecxe
はい、それは遅いコレクションです。私はコレクトカウントの開始を0、2、7に見ることができます。私はこれを '--collectonly'で再度検証しました。収集をポストすると、実行はほぼ即時です。 –
私は400以上のテストと収集フェーズを持つプロジェクトを持っていますが、非常に高速です。さらに私はconftest.pyに多くの魔法、多くの 'parametrize'、fixtures、' pytest_generate_tests'を追加しています。これは私の場合はこの収集が高速ですが、収集を遅くするものです。 pytest収集フェーズとやりとりする独自のコードを持っていないことを確認し、それを遅くします。そうでない場合は、プロファイラーのようなラインプロファイラーを実行して、どのコードが遅いかを調べることができます。 – spinus