我在使用pytest做接口自动化时, 使用了pytest-xdist来做多线程执行用例, 但是发现conftest.py文件里的函数也被重复执行了,因为conftest.py文件里面是“登录”, 我总不能一个用例登录一次,有什么办法可以解决这个问题呢?
问题已经解决, 从官方文档中找到了解决方法, 解决方法如下:
多线程后, 这个方法只会执行一次,而不会跟着多线程多次执行。
@pytest.fixture(autouse=True, scope="class")
def login_request(tmp_path_factory, worker_id):
if worker_id == "master":
# 登录方法_pc
BusinessCase().login_pc()
# 获取所有子节点共享的临时目录,无需修改【不可删除、修改】
root_tmp_dir = tmp_path_factory.getbasetemp().parent
# 【不可删除、修改】
fn = root_tmp_dir / "data.json"
# 【不可删除、修改】
with FileLock(str(fn) + ".lock"):
# 【不可删除、修改】
if fn.is_file():
pass
else:
# 登录方法_pc
BusinessCase().login_pc()
只执行一次是 scope=class 控制的吧
@ahguo: 你说的这个是夹具,和这个没有关系的
@博无止境: 那原来多线程执行为什么登录会多次执行