fixture属于pytest独有的前后置处理特性,特点是灵活多变,应用广泛
1、fixture的语法形式
在前后置方法(普通函数)上使用装饰器@pytest.fixture
fixture与传统的前后置方法最大的不同是它前后置方法的名称可以不固定
2、yeild关键字
fixture的前后置方法写在同一个函数里,使用yeild关键字分隔,形式如下:
@pytest.fixture
def fix()
前置代码
yeild
后置代码
3、fixture的作用域
fixture的作用域有以下几个:
1.测试函数----function
2.测试类----class
3.测试模块文件----module
4.测试会话----session(测试集中的所有用例)
fixture自定义作用域的方法如下:
@pytest.fixture(scope=作用域)
def fix()
pass
4、fixture的共享机制
创建文件contest.py,在这个模块下创建多个fixture,整个项目可以共享这个模块的所有fixture
5、fixture的返回值
前置代码得到的返回值可以传递给测试用例,使用【yeild 返回值】的形式返回所需值
在传递给测试用例中,用例函数内部传入形参,形参的值为返回值前置函数的函数名
6、fixture的调用
测试用例函数/类主动调用fixture,在需要前置的时候调用。
调用时在测试用例函数/类上加装饰器@pytest.mark.userfixture(“fixture函数名称”)
7、conftest.py
1、模块里放的都是fixture
2、fixture对外共享,不需要import引入,可直接使用
3、共享范围:
conftest.py所在的目录下(含子孙目录),所有用例共享
4、conftest.py可以创建多个,在不同的包下,可以层级创建的
5、优先级:就近原则
6、可以嵌套使用(伪继承)
场景:一个fixture想完全使用另一个fixture,并在人家的基础上新增一些代码
嵌套语法:
@pytest.fixture
def fix1(fix2):
嵌套之后的执行顺序:
fix2的前置-->fix1的前置-->fix1的后置-->fix1的前置
原文:https://www.cnblogs.com/xiao-yin-30/p/13517100.html