日常接触到的接口自动化从实际目标可以划分为两大类:
1、为模拟测试数据而开展的接口自动化
这种接口自动化大多是单次执行,目的很明确是为了功能测试创造测试数据,节约人工造数据的时间和人工成本,提高功能测试人员的测试效率。
2、在功能测试之前提前发现错误而开展的接口自动化
这种接口自动化的工作流程跟功能测试一样,需要设计接口测试用例,然后执行接口测试用例。
说白了就是对单接口进行功能校验,包括接口参数的必填性、长度字符类型限制、入参枚举值等是否正确、响应数据是否正确等进行校验。
本文主要讲解第二种的接口自动化测试。浓缩了接口自动化的核心点进行实战,该实战或许能成为面试的加分点。
-
接口测试用例设计
-
代码读取接口测试用例
-
利用pytest框架实现接口自动化
-
利用python-requests完成接口请求
-
利用jenkins+allure实现持续构建和输出测试报告
需求分析
-
Excel管理接口测试用例
-
Pytest框架运行测试用例
-
Jenkins集成构建
-
Allure展示测试报告
数据准备
了解接口
1.接口请求方式:get
2.接口请求头:{"Content-Type": "text/html;charset=utf-8"}
3.接口请求体:{"key": "*****************,"type": ""}
4.参数值:type=guoji、keji、yule,默认top
5.新闻请求:http://v.juhe.cn/toutiao/index
备注:接口请求的key需要自行去聚合数据平台申请。
设计接口测试用例
接口测试用例设计思路跟功能测试用例设计一致,基本是是校验:必填项、字符类型长度限制、入参内容等。
接口部分用例设计如下:(仅供参考)
脚本目录设计
完整的接口自动化测试,一般分为:数据、公共配置、接口脚本、报告四大基础文件夹。
-
数据:Data文件夹用于存放数据,例如测试用例文档
-
公共脚本:Common文件夹用于存放公共方法的代码文件,例如:读取测试用例代码文件等
-
接口脚本:Request文件夹用于存放各个不同业务接口的代码文件,例如:获取新闻头条接口代码文件等
-
报告:Report文件夹,用于存放测试结果报告
脚本设计相关知识点
读取测试用例
知识点1:xlrd读取excel的基础方法
1.打开文件对象:fb=xlrd.open_workbook(‘xls测试用例文件路径’)
2.获取工作表名称:sheetnames=fb.sheet_names ()
3.打开测试用例所在工作表:casesheet=fb.get_by_name(‘’用例所在工作表名称)
4.获取测试用例条数(表格行数):rows=casesheet.nrows
5.获取工作表内单元格值:cell_value=casesheet.cell_values(x,y),其中x 和y为单元格的横坐标和纵坐标
6.由于需要通过pytest的装饰器进行参数化,所以读取到的单元格需要组合成列表的模板
例如:
case1=[‘url_01’,’method_01’,{body_01 },’expect_01’] case2=[‘url_02’,’method_02’,{body_02 },’expect_02’]
最后提供给pytest读取的数据应该是:
[[‘url_01’,’method_01’,{body_01 },’expect_01’], [‘url_02’,’method_02’,{body_02 },’expect_02’]]
代码片段:
使用列表追加的方法append()。
备注:通过cell_values()读取到的单元格数据,默认是字符串str类型。
知识点2:数据转化
1.url、method是字符串类型,所以无需转化
2.header和body需要通过json.loads()转为json格式
接口请求
知识点1:requests接口请求基础
1.发起接口请求:
resq=request.get() resq =request.post()
2.获取响应数据并转为json格式:resq.json()
3.断言:assert
4.提取响应内容:jsonpath语法
response[‘msg’] response[‘data’][‘name’]
知识点2:pytest框架
环境安装:
pip install pytest
1.Pytest使用规则:用例和脚本文件必须以test开头
2.参数化执行用例:Pytest装饰器@pytest.mark.aprametrize()
a)单个参数写法:@pytest.mark.parametrize('inData',[10,20]),第一个参数为变量名称,第二个为参数值。不需要设置循环读取参数值,因为pytest的装饰器会自动循环读取。
b)多个参数写法:(参数值以元组形式写)@pytest.mark.parametrize('第一个参数名称,第二个参数名称'),[(第一个参数的第一个值,第一个参数的第二个值),(第二个参数的第一个值,第二个参数的第二个值)]。
c)不需要设置循环读取参数值,因为pytest的装饰器会自动循环读取。
3.本地调试运行脚本:
接口自动化运行脚本到生成allure-html报告,分为2步骤:
第1步:alluredir生成测试报告数据源文件json,存入report文件夹内
pytest.main(['接口请求脚本文件.py','-s','--alluredir=../report/'])
第2步:从report文件夹内将测试报告数据源文件json转为html报告
os.system('allure generate ../report/ -o ../report_html/')
持续构建
知识点:jenkins构建+allure测试报告
1.Jenkins环境搭建
2.下载allure报告插件
3.构建
a)构建:利用pytest命令执行脚本,并生成allure源数据
b)构建后操作:添加allure report(jenkins会自动将allure源数据组合成html报告)
结果
最后:
【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战