Day19使用fixtrue固件+conftest实现用例的前后置
一、部分/全部用例执行之前/之后需要进行的操作登录获取鉴权码查询数据库等可能是所有的用例也可能是部分的用例。重点conftest.py 是一个固定文件名专门用来存放 fixture。pytest 的fixture 固件就是用来实现测试用例前后置处理的机制。二、如何把一个函数设置为一个 fixture 固件只需要加一个固件装饰器就可以了。# 加上pytest.fixture装饰器普通函数就变成fixture固件#pytest.fixture(scope,autouse,params,ids,name)#固件所填参数#conftest.py # 加上pytest.fixture装饰器普通函数就变成fixture固件 import pytest #fixture固件 pytest.fixture(scopefunction,autouseFalse) def exe_sql_select_db(): try: # print(前置查询数据库的操作) raise Exception(百里筐瓢了) except Exception: print(异常处理) yield print(后置aa) # 1、异常捕获测试稳定性 raise Exception(百里筐瓢了)主动抛出异常模拟前置准备失败比如数据库连接报错、查询失败 try...except捕获异常做异常处理打印。 #2、fixture 前后置原理yield #yield之前的代码 前置操作用例执行前执行这里是数据库查询逻辑 #yield之后的代码 后置操作用例跑完之后执行这里打印后置aa三、pytest.fixture装饰器所填参数的作用1、scope定义固件的作用范围。function 函数 在每个函数用例的前后置执行一次函数的手动调用案例def test_get_token(selfexe_sql_select_db):#test_api.py class TestApi: #函数的手动调用 token def test_get_token(selfexe_sql_select_db): u https://api.weixin.qq.com/cgi-bin/token p { grant_type:client_credential, appid: wx8a9de038e93f77ab, }class 类 在每个类的前后置执行一次类的手动调用案例pytest.mark.usefixtures(exe_sql_select_db)#test_api.py pytest.mark.usefixtures(exe_sql_select_db) class TestApi: #类的手动调用 token def test_get_token(self): u https://api.weixin.qq.com/cgi-bin/token p { grant_type:client_credential, appid: wx8a9de038e93f77ab, }module 模块 在每个模块的前后置执行一次session 会话 在每个会话的前后置执行一次2、autouse用自动还是手动执行固件true 自动false 手动autouseTrue自动触发不用传参范围内所有用例都会执行固件autouseFalse手动触发需要在用例参数传入固件名用例指定才执行。3、params传参以及参数化固件参数化传入多组数据循环执行用例。很少用在实现固件的时候实现参数化。4、 ids和 params 一起使用在参数化的时候对参数进行别名的5、 name设置固件别名如果设置了 name那么就只能用这个别名不能用原来固件名四、固件传参过程只有手动才能传参类型1固件 yield 返回值固件的值传到用例里面特点单次执行返回 1 个数据没有多组循环。类型2params 参数化固件 request.param给固件本身传入多组数据固件再传给用例特点给固件配置多组测试数据pytest 会自动循环每组数据单独跑一次用例