浓缩接口自动化核心知识点实战,为面试加分

发表于:2021-5-08 09:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:绿豆芽呀    来源:51Testing软件测试网原创

  日常接触到的接口自动化从实际目标可以划分为两大类:

  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格式

  接口请求
  知识点:requests接口请求基础
  1.发起接口请求:resq=request.get()、resq =request.post()
  2.获取响应数据并转为json格式:resq.json()
  3.断言:assert
  4.提取响应内容:
  jsonpath语法,response[‘msg’]、response[‘data’][‘name’]

  知识点: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报告)

  结果




版权声明:本文出自《51测试天地》第六十一期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号