問題タブ [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.

0 投票する
1 に答える
32 参照

python - pytest マルチプロセッシングで同じファイルに書き込む

を介してマルチプロセス/パラレルで実行される pytest テスト スイートがありますpytest-xdist。これらのテストの一部は同じファイルに書き込みますが、これはマルチプロセッシング時に問題になる可能性があります。

このようなことをすればうまくいくと思いましたが、うまくいきませんでした:

util.py

そしてでtest_something.py

テストがハングすることもあれば、WRITE/READ の問題が発生することもありました。

LOCKを間違った場所に配置していませんか? すべてのテストでグローバル オブジェクトを渡す方法はありますか? それとも、私はそれについて間違った方法で考えていますか?

0 投票する
0 に答える
64 参照

python - --pytest xdist のキャッシュクリア

目標: テスト コレクションの前に、pytest キャッシュにランダムな値を設定する必要があります。

問題: オプション master を指定して pytest-xdist を使用してテストを並行して実行する--cache-clearと、各ワーカーがキャッシュをクリアするため、値を設定する前にすべてのワーカーの準備が整っていることを確認する必要があります。

考えられる解決策:

それは正常に動作します。10 秒のスリープがあり、すべてのワーカー (ノード) を開始するのに十分なようです。すべてのワーカーが開始され、すべてのワーカーがキャッシュをクリアします。最初のものは値をキャッシュに設定し、他の人はそれを取得します。しかし、私はこのアプローチが好きではありません。なぜなら、すべてのワーカーが開始され、余分な待ち時間が発生するという保証がないからです。

私は他のアプローチについて考えます:

  1. ワーカーのキャッシュのクリアを無効にする
  2. すべてのワーカーが開始されていることを確認します

しかし、私はそれを行う方法を理解できません。何か案は?

更新番号 1。最小限の再現可能な例

要件:

コード:

conftest.py

test_clear_cache.py

出力:

注:conftest.pyテストでコードのコメントを外すと、同じ名前が出力されます。

0 投票する
0 に答える
21 参照

python - pytest-xdist を使用すると、pytest_configuration が数回実行される

私の conftest.py には、テストを実行して構成する前にいくつかの API を実行する pytest_configuration フックがあります。pytest-xdist を使用してテストを並行して実行するまで、すべてが期待どおりに機能しています。この場合、選択したノードの数に応じて、フックが n+1 回実行されます。

問題の解決策はありますか? 構成は一度だけ実行する必要があります。