pytest快速入门(3)--fixrture的共享和嵌套
一、fixture的共享机制
conftest.py模块主要用于定义各种fixture,其中的fixtures可以被外部的测试用例进行调用,从而实现conftest.py中的fixture被共享。
1、共享的范围
conftest.py模块所在目录下的(包含其子目录)测试用例均可以调用该模块中定义的fixture。
【实例】
(1)目录结构
(2)测试用例
2、共享的优先级
在实际应用中,我们可能在不同的package中定义多个conftest.py文件,此时测试用例中调用fixture的原则为:就近原则
即优先级别为:测试用例所在模块定义的fixture >> 测试用例所在目录下的conftest.py >> 测试用例所在目录的父目录下的conftest.py
二、fixture的嵌套
fixture的嵌套类似于类的继承关系。
1、什么时候使用fixture的嵌套?
A:新定义的fixture想完全使用另一个fixture,并且在其基础上新增一些操作。
2、如何实现嵌套? -- fix2中嵌套fix1
1 @pytest.fixture 2 def fix1(): 3 pass 4 5 @pytest.fixture 6 def fix2(fix1): 7 新增加的代码 8 pass
3、嵌套fixture的执行顺序? -- 以上述嵌套为例进行说明
fix1的前置
fix2的前置
fix2的后置
fix1的后置
4、可以将任意级别的fixture进行嵌套吗?
不能,根据嵌套fixture的执行顺序,fix1的级别 >= fix2的级别。