一、fixture详解
1、概念
fixture是pytest用于将测试前后进行预备、清洁工作的代码处理机制
2、fixture相对于setup和teardown来说有以下几点优势
fixture命名更加灵活,局限性比较小
conftest.py配置里面可以实现数据共享,不需要import就能自动找到一些配置
3、使用方法1
@pytest.fixture中使用
autouse=True:全部测试用例都使用该前置步骤
4、使用方法2
目标测试用例中引入前置方法
5、fixture夹具,@pytest.fixture
(scope="function") 每一个函数或方法都会调用
(scope="class") 每一个类调用一次
(scope="module") 每一个.py文件调用一次
(scope="session") 多个文件调用一次, .py文件就是module
fixture的作用范围:session>module>class> function
二、fixture功能之session
使用步骤:
1、目标文件所属目录下新建“conftest.py”文件
(必须命名为conftest.py,框架会识别这个文件)
(conftest.py配置里可实现数据共享,不需要import就能自动找到一些配置)
2、conftest.py文件中写入配置
3、命令行查询目标目录下所有测试用例
(多文件测试用例,session只执行一次)
三、conftest管理fixture
conftest.py:
conftest.py为固定写法,不可以修改名字
使用conftest.py文件方法无需导入
函数作用于当前文件夹 下属文件夹
四、fixture+conftest
1、返回数据
1、conftest.py中定义参数
2、目标测试用例中使用
用法1:直接使用
用法2
2、使用yield做后置处理
每个测试用例结束都打印了一次后置步骤
与 return "我是返回值“ 的区别是,return后不再执行后置步骤
yield返回值后还会再执行后置步骤
3、usefixtures方法
fixture调用方法:
@pytest.fixture(scope="function")
def func():
xxx
第一种:可以接收返回值(方法里面写方法名)
def test_func(func):
xxx
第二种:无法接收返回值
@pytest.mark.usefixtures('func')
def test_func():
xxx
实例:
不能添加返回值实例:
(不会报错,但是也没有出现返回值)
4、params和ids
params:参数
ids:测试用例标识
实例: