1

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

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

util.py

import multiprocessing

LOCK = multiprocessing.Lock()

そしてでtest_something.py

from util import LOCK
...
def test_something():
    ...
    LOCK.acquire()
    write_to_file()
    LOCK.release()
    ...

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

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

4

1 に答える 1