一、fixture简介
fixture用来完成那些需要多次重复执行的用例,比如需要先退出,再更换其他用户登录。我们可以把用于退出和登录的用例的函数比如叫做A函数,在A函数的前面加上@pytest.fixture()装饰器,这样,这个A函数就可以被其他函数直接调用了,只要其他用例函数在执行前需要有先进行退出再更换其他用户登录的操作,都可以直接调A函数。类似unittest中setup/teardown这种前后置。
fixture可以通过设置 scope 参数来控制其作用域。fixture提供四种作用范围: function、class、module、session,session>module>class>function。
函数function:每个方法(函数)都会执行一次;
类class:每个类都会执行一次。类中有多个方法调用,都可以共享这个 fixture。(看到有说只在第一个方法调用时执行?需研究,标记一下)
模块module:一个 .py 文件执行一次。一个.py 文件可能包含多个class和function;
会话package/session:多个文件调用一次,可以跨 .py 文件。一次 pytest 会话中的所有测试函数、方法都可以共享这个 fixture
@pytest.fixture()如果不写参数,参数就是scope="function",它的作用范围是每个测试用例来之前运行一次,销毁代码在测试用例之后运行。
二、fixture用途