如何让scope=session的fixture在 test session 中仅仅执行一次
pytest-xdist是让每个worker进程执行属于自己的测试用例收集下的所有测试用例,这意味着在不同进程中,不同的测试用例可能会调用同一个scope范围级别较高(如session)的fixture,该fixture会被执行多次,不符合scope=session的预期。
解决
虽然pytest-xdist没有内置的支持来确保会话范围的夹具仅执行一次,但可以通过使用锁定文件进行进程间通信来实现:file-Lock
import pytest
from filelock import FileLock
@pytest.fixture(scope="session")
def login():
print("====登录功能,返回账号,token===")
with FileLock("session.lock"):
name = "testyy"
token = "npoi213bn4"
# web ui自动化
# 声明一个driver,再返回
# 接口自动化
# 发起一个登录请求,将token返回都可以这样写
yield name, token
print("====退出登录!!!====")