autouse 简介
在自动化测试中,fixture 可以用于自动生效(autouse),它们会自动在每个测试用例运行前自动调用,而无需在测试用例中显式引用 Fixture。这对于执行通用的测试前和测试后操作非常有用。
autouse 参数与 yield 关键字的区别
-
yield解决的是「怎么清理」 -
autouse=True解决的是「清理会不会被执行」
pytest 不会主动执行 fixture,fixture 只有在 被使用时才会执行,而 autouse=True 的本质作用即pytest 会在每个测试生命周期节点自动插入这个 fixture。
autouse 的作用本质
-
创建一个 fixture 函数
python@pytest.fixture(autouse=True) def clean_env(): -
autouse 的作用本质是调用如上代码时不需要显试调用,默认直接测试函数调用了 fixture 函数
pythondef test_search():
autouse 参数的使用场景
- 不想原测试⽅法有任何改动,或全部都⾃动实现⾃动应⽤,没有特例,也都不需要
yield给返回值时可以选择⾃动应⽤。
代码示例
-
代码示例
pythonimport pytest @pytest.fixture(scope="class", autouse=True) def login(): # setup 操作 print("输入密码") username = "user" password = 'Aa123456' yield #username, password # 相当于return # teardown 操作 print("退出操作") def test_search(): # username, password = login # print(f"password: {password} , username : {username}") print("搜索")- 运行结果:由结果可见,没有调用 fixture 函数,但 fixture 函数内的条件均执行了

- 运行结果:由结果可见,没有调用 fixture 函数,但 fixture 函数内的条件均执行了