問題タブ [pytest-xdist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - pytest マルチプロセッシングで同じファイルに書き込む
を介してマルチプロセス/パラレルで実行される pytest テスト スイートがありますpytest-xdist
。これらのテストの一部は同じファイルに書き込みますが、これはマルチプロセッシング時に問題になる可能性があります。
このようなことをすればうまくいくと思いましたが、うまくいきませんでした:
でutil.py
:
そしてでtest_something.py
:
テストがハングすることもあれば、WRITE/READ の問題が発生することもありました。
LOCK
を間違った場所に配置していませんか? すべてのテストでグローバル オブジェクトを渡す方法はありますか? それとも、私はそれについて間違った方法で考えていますか?
python - --pytest xdist のキャッシュクリア
目標: テスト コレクションの前に、pytest キャッシュにランダムな値を設定する必要があります。
問題: オプション master を指定して pytest-xdist を使用してテストを並行して実行する--cache-clear
と、各ワーカーがキャッシュをクリアするため、値を設定する前にすべてのワーカーの準備が整っていることを確認する必要があります。
考えられる解決策:
それは正常に動作します。10 秒のスリープがあり、すべてのワーカー (ノード) を開始するのに十分なようです。すべてのワーカーが開始され、すべてのワーカーがキャッシュをクリアします。最初のものは値をキャッシュに設定し、他の人はそれを取得します。しかし、私はこのアプローチが好きではありません。なぜなら、すべてのワーカーが開始され、余分な待ち時間が発生するという保証がないからです。
私は他のアプローチについて考えます:
- ワーカーのキャッシュのクリアを無効にする
- すべてのワーカーが開始されていることを確認します
しかし、私はそれを行う方法を理解できません。何か案は?
更新番号 1。最小限の再現可能な例
要件:
コード:
conftest.py
test_clear_cache.py
出力:
注:conftest.py
テストでコードのコメントを外すと、同じ名前が出力されます。
python - pytest-xdist を使用すると、pytest_configuration が数回実行される
私の conftest.py には、テストを実行して構成する前にいくつかの API を実行する pytest_configuration フックがあります。pytest-xdist を使用してテストを並行して実行するまで、すべてが期待どおりに機能しています。この場合、選択したノードの数に応じて、フックが n+1 回実行されます。
問題の解決策はありますか? 構成は一度だけ実行する必要があります。