目录
介绍
在测试当中,fixture为测试用例提供服务,比如配置数据库、获取配置信息、环境准备清理等,对于一些复杂的测试用例编写带来了很大的帮助
fixture一般是定义到conftest.py文件当中,他的作用域是使用fixture的用例从里往外找,比如项目根下一个conftest文件,用例同级目录下有一
个conftest文件,优先使用用例同级下的conftest文件
fixture是通过 @pytest.fixture装饰器去定义,他的作用域有function(默认)、class、module、package、session,定义在conftest文件的fixture在用
例使用的时候不需要倒入,可以直接使用
快速定义fixture
- 定义fixture
# conftest.py @pytest.fixture def x(): return 1
- 使用fixture
# test.py def test_01(x): print(x)
- fixture的使用方法
- fixture可以调用其他fixture
- fixture可以可以被重复调用,他就像普通函数一样
- 一个测试用例或者一个fixture可以调用多个fixture
- fixture的使用方法
自动执行fixture
- 在测试当中不需要调用 在用例执行前自动执行fixture
@pytest.fixture(autouse=True) def x(): print(1) # test.py def test_01(): pass
fixture的参数
scope
Fixtures 在测试首次请求时创建,并根据它们的scope:-
function:
scope='function' 函数级别的fixture每个测试函数只需要运行一次,测试用例运行前运行一次,测试用例运行后运行一次,它是scope的默认参数。
-
class:夹具在类中最后一个测试的拆卸过程中被销毁。
scope='class' 类级别的fixture每个测试类只需要运行一次,无论测试类中有多少个类方法都可以共享这个fixture。
-
module:夹具在模块中最后一个测试的拆卸过程中被破坏。
scope='module' 模块级的fixture每个模块只运行一次,无论模块中有多少个测试函数、测试类、测试类方法或是其他的fixture都可以共享这个fixture。
-
package:在拆解包中的最后一个测试时,夹具被破坏。
scope='package' 包级别的fixture实际和session的功能一致。
-
session:夹具在测试会话结束时被销毁。
scope='session’ 会话级别的fixture每次会话只需要运行一次,一次pytest会话中的所有测试函数、测试类、测试类方法都可以共享这个fixture。
-
autouse
默认是False,设置成True的时候不需要调用自动执行name
可以通过name参数设置fixture名称
更多参数详情见
更多使用方法见
fixture更详细解刨见