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

0

为此,您可能需要使用https://py-filelock.readthedocs.io/en/latest/

pip install filelock,然后尝试示例,例如:

from filelock import Timeout, FileLock

lock = FileLock("high_ground.txt.lock")
with lock:
    open("high_ground.txt", "a").write("You were the chosen one.")
于 2022-01-11T16:57:11.503 回答