【实战】python+pytest+allure+jenkins实现接口自动化

从0开始的接口自动化

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

  1. 为模拟测试数据而开展的接口自动化

这种接口自动化,大多是单次执行,目的很明确是为了功能测试创造测试数据,节约人工造数据的时间和人工成本,提高功能测试人员的测试效率。

  1. 在功能测试之前提前发现错误而开展的接口自动化

这种接口自动化的工作流程跟功能测试一样,需要设计接口测试用例,然后执行接口测试用例。说白了就是对单接口进行功能校验,包括接口参数的必填性、长度字符类型限制、入参枚举值等是否正确、响应数据是否正确等进行校验。

本文主要讲解第二种的接口自动化测试。浓缩了接口自动化的核心点进行实战,该实战或许能成为面试的加分点。

  1. 接口测试用例设计
  2. 代码读取接口测试用例
  3. 利用pytest框架实现接口自动化
  4. 利用python-requests完成接口请求
  5. 利用jenkins+allure实现持续构建和输出测试报告

需求分析

  1. Excel管理接口测试用例
  2. Pytest框架运行测试用例
  3. Jenkins集成构建
  4. 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需要自行去聚合数据平台申请

设计接口测试用例

接口测试用例设计思路跟功能测试用例设计一致,基本是是校验:必填项、字符类型长度限制、入参内容等。

接口部分用例设计如下:(仅供参考)

脚本目录设计

完整的接口自动化测试,一般分为:数据、公共配置、接口脚本、报告三大基础文件夹。

  1. 数据:Data文件夹用于存放数据,例如测试用例文档
  1. 公共脚本:Common文件夹用于存放公共方法的代码文件,例如:读取测试用例代码文件等
  2. 接口脚本:Request文件夹用于存放各个不同业务接口的代码文件,例如:获取新闻头条接口代码文件等
  3. 报告: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()
    1. 单个参数写法:@pytest.mark.parametrize('inData',[10,20])  第一个参数为变量名称,第二个为参数值。不需要设置循环读取参数值,因为pytest的装饰器会自动循环读取
    2. 多个参数写法:(参数值以元组形式写)@pytest.mark.parametrize('第一个参数名称,第二个参数名称'),[(第一个参数的第一个值,第二个参数的第一个值),(第一个参数的第二个值,第二个参数的第二个值)]
    3. 不需要设置循环读取参数值,因为pytest的装饰器会自动循环读取

  1. 本地调试运行脚本:

接口自动化运行脚本到生成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. 构建
    1. 构建:利用Pytest命令执行脚本,并生成allure源数据
    2. 构建后操作:添加allure report(jenkins会自动将allure源数据组合成html报告)

 

结果

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miss糖豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值