浅谈python+requests实现接口自动化

  1. 前言 今年2月调去支持项目接口测试,测试过程中使用过postman、jmeter工具,基本能满足使用,但是部分情况下使用较为麻烦。 比如:部分字段存在唯一性校验或字段间有业务性校验,每次请求均需手工修改部分报文内容,使用工具难以满足实际使用。 因此,萌生了使用python去实现接口自动化的想法。之前未接触过接口测试,但有一点编程基础,经过2个多月的磕磕碰碰,不断完善,经历2次重构之后,最后基本达成了目标。

  2. 技术栈 python语言 requests库 unittest单元测试框架 HTMLTestReportCN、BeautifulReport测试报告

  3. 实现的功能概述 支持post、get等请求类型,xml、json格式的报文 支持使用excel编写测试用例,测试用例支持涉及多接口的场景用例;支持按脚本的形式编写测试用例 支持测试结果保存至数据库,支持生成html报告,支持将生成的测试结果导出到excel文件 支持邮件发送测试结果 支持多线程并发执行测试用例

  4. 框架及项目结构 APIS_AutoTest

api: 主程序目录

comm:公共函数,包括:接口请求基类、请求及相应数据操作基类等

intf_handle:接口操作层,包含:接口初始化、断言等

business:业务实现部分

utils:工具类,包括:读取文件、发送邮件、excel操作、数据库操作、日期时间格式化等

config:配置文件目录,包含yaml配置文件、以及路径配置

data:测试数据目录,用于存放测试数据

temp:临时文件目录,用于存放临时文件

result:结果目录

report:测试报告目录,用于存放生成的html报告

details:测试结果详情目录,用于存放生成的测试用例执行结果excel文件

log:日志文件目录

test:测试用例、测试集相关目录,启动test_suite执行用例文件存放在此

test_case:测试用例存放路径

test_suite:测试模块集,按模块组装用例

  1. 测试用例执行流程 以脚本形式编写的测试用例执行流程图:

以excel形式编写的测试用例执行流程图:

  1. 核心方法设计 接口请求基类

RequestBase(request_type, url, header, body, data_type=None)

功能描述:

根据传入的请求类型,请求地址,请求头,请求体,发送接口请求,获得响应头,响应体

request_type: 请求类型,只能是'GET', 'POST', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE', 'CONNECT'中的一个,无大小写要求 url: 请求地址,完整的接口地址 head: 请求头 body:请求体,xml格式请求体为字符串;json格式请求体需传入json格式 data_type: 数据类型,未使用字段,备用。可为:xml、json 支持方法

__send_request() 发送请求,类私有方法,初始化时调用,调用方法返回:响应对象

get_respond() 获取响应对象,调用方法返回:响应对象

get_respond_head() 获取响应头,调用方法返回:响应头

get_respond_body() 获取响应体,调用方法返回:响应体

请求或响应数据操作基类

RequestRespondHandle(data_type, body, fields, value_dict=None)

功能描述:

根据传入的xml、json格式请求体或响应体,读取字段的值或更新字段的值

参数描述:

data_type: 数据类型,当前仅支持xml、json,不区分大小写 body: 请求体或响应体,json格式请求体支持传入字典、json格式数据(自动转换为字典) fields: 字段名称,支持多字段传入,支持数据类型:字符串、元组、列表。多字段传入形式,字符串:多个字段名称之间逗号隔开,如:'a1,b2';元组、列表正常传入即可。json格式:需写入完整节点路径,如:body.base.name,对应list类型的需传入索引位置,如:body.baselist[0].name value_dict: 字段值字典,以字段名称及字段值键值对的方式存储数据,读取字段值时,一般不需传入,也支持传入(用于读取excel形式流程前后传值);更新字段值时,需传入,且字典中的key值需要与fields中的字段名对应。 支持方法:

get_fields_value() 获取字段值,调用方法即可获取到xml或json格式的请求体或响应体对应的字段值,并返回:字段值字典

update_fields_value() 更新字段值,调用方法即可更新请求体中对应的字段值,返回更新后的请求体。 Json格式请求体返回格式为字典。

不足与改进:

xml格式,读取或更新字段时,若存在多个相同名称字段,默认只选第一个; json格式,读取嵌套列表的时候,未支持按列表读取,当前需精确位置单个读取或更新;

请求体初始化-接口映射类

RequestMsgIni

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值