日常接触到的接口自动化从实际目标可以划分为两大类:
为模拟测试数据
而开展的接口自动化
这种接口自动化大多是单次执行,目的很明确是为了功能测试创造测试数据,节约人工造数据的时间和人工成本,提高功能测试人员的测试效率。
在功能测试之前提前发现错误
而开展的接口自动化
这种接口自动化的工作流程跟功能测试一样,需要设计接口测试用例,然后执行接口测试用例。
说白了就是对单接口进行功能校验,包括接口参数的必填性、长度字符类型限制、入参枚举值等是否正确、响应数据是否正确等进行校验。
本文主要讲解第二种的接口自动化测试。浓缩了接口自动化的核心点进行实战,该实战或许能成为面试的加分点。
接口测试用例设计
代码读取接口测试用例
利用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报告)
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)
被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!
涵盖以下这些面试题板块:
1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux
6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础
获取方式 :