0代码实现接口自动化测试 —— RF框架实践
robotframework是一款关键字自动化测试框架,可能做各种类型的自动化测试。本文介绍通过 robotframework 来实现接口测试。
01、安装接口请求的第三方库
pip install robotframework-requests |
在python安装目录的Lib\site-packages可以看到
02、接口关键字基础
robotframework-requests关键字文档地址:http://marketsquare.github.io/robotframework-requests/doc/RequestsLibrary.html
以我的接口项目中的以下接口为例:
1. 创建测试集合并导入接口库
创建一个测试集合apibasic,选中后在设置区导入RequestsLibrary库
测试集合下添加集合全局变量host,作为接口测试的域名
在该集合下将会针对码同学全栈接口项目中的接口进行测试,每个接口的域名都是一致的,因此我们给测试集合增加一个前置动作,前置动作里完成该域名下session的创建,那么在用例之中发起请求时都使用该session,可以帮我们有效关联相关数据
关键信息解释,创建一个session对象,命名为pinter:
Create Sesion:这是接口库提供的一个关键字,用来创建一个session对象
pinter:这是自定义起的一个session对象的名字,用于后续其他地方要使用时进行引用
${host}:这是引用集合变量定义的host
2. get接口
创建一个用例,起名叫get接口
Get On Session:发起get请求的关键字
${resp.json()}[message]:表示提取接口响应body体重的message字段
3. post 表单接口
创建一个用例,起名叫post表单接口
Post On Session:发起post请求的关键字
4. post json接口
由于json格式参数通常比较多,所以我们将他定义成了普通变量,但是接口关键字请求时json参数 必须是字典格式,所以使用Evaluate关键字将字符串形式的json参数转换成字典
5. put 接口
6. delete 接口
7. 文件上传
表单形式上传
Get File For Streaming Upload:获取本地文件转换成流对象
${resp.text}:因为该接口返回信息并不是json串,是个纯文本,所以使用这种方式获取
Ajax上传接口
8. 文件下载接口
9. 需要签名验证的接口
接口参数格式如下,其中timestamp参数时实时的毫秒时间戳
{"phoneNum":"123434","optCode":"testfan","timestamp":"12112121212","sign":"your sign data"}
签名规则如下:
sign字段的值 = phoneNum+optCode+timestamp
组合在一起然后进行md5加密
因此在脚本中需要先进行加密处理,同时因为用到了实时时间戳,所以我们要导入一个时间处理库 DateTime库,在测试集合中导入DateTime库
加密时的核心:
hashlib.md5('${phoneNum}${optCode}${timestamp}'.encode(encoding='utf8')).hexdigest()
计算得到毫秒时间戳:
int(round(${timestamp} *1000))
脚本如下:
10. cookie关联
在使用相同的session对象时,会自动做到cookie关联
先实现登录接口的用例,再实现查询余额接口的测试,然后两个一起执行即可
一起执行,勾选两条用例
11. token关联
对于接口鉴权采用token时,即便采用相同的session对象也是关联不了的,需要我们自行处理
业务规则:
登录接口成功后响应信息中的data字段就是产生的token值
查询余额接口请求时headers中的testfan-token字段就是token参数名称
因此我们需要从登录接口响应中提取data,并将其传给查询余额的接口headers
脚本如下:
03、rf数据驱动实现接口测试
1. 安装数据驱动依赖库
pip install robotframework-datadriver |
在python安装目录的Lib\site-packages可以看到
2. 准备测试数据文件
以码同学全栈接口项目的一个登录接口为例,准备测试数据
创建一个excel文件写入如下数据:
第一行第一列是固定格式,表示测试用例名称
第二列开始是测试数据对应的变量名称
第二行开始是测试数据
3. 创建测试集合并导入第三方库
创建测试集合apidatadriver,导入库RequestsLibrary和DataDriver,注意导入DataDriver时要写参数,导入后标红的话先不用管,继续做
4. 创建集合变量并初始化session
5. 创建登录接口关键字
6. 创建测试用例引用数据驱动
测试用例中只需要在设置的模板中填写第5步创建的登录接口关键字即可
执行测试,测试数据有三组,登录接口也执行了三次
绵薄之力【软件测试全套资源分享】
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等配套学习资源免费分享
0代码实现接口自动化测试 —— RF框架实践相关推荐
- 接口自动化测试平台Lego ------ 美团接口自动化测试超全实践【3000字长文】
一.概述 1.1 接口自动化概述 众所周知,接口自动化测试有着如下特点: 低投入,高产出. 比较容易实现自动化. 和UI自动化测试相比更加稳定. 如何做好一个接口自动化测试项目呢? 我认为,一个&qu ...
- 用Postman+Newman+Jenkins,0成本实现接口自动化测试
本文目录: 一.是什么Newman 二.如何安装 三.如何使用 1.运行本地文件 2.运行在线文件 3.以node.js库运行 4.导出报告 四.命令行测试真实接口 1.导出collection文件 ...
- python接口自动化测试代码_python接口自动化测试二:python代码实现接口测试
url = '接口地址' r = requests.get(url) #发送get请求 print(r.status_code) #打印状态码,若有重定向,返回的是重定向之后的代码 print(r.h ...
- Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战
一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm ...
- 【软件测试】接口自动化测试面试题及详细答案
前言 最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案. 为此我业余时间整理了这份软件测试基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可. 接 ...
- 测试面试集-Python接口自动化测试
VOL 159 18 2020-09 今天距2021年104天 这是ITester软件测试小栈第159次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上 ...
- 零代码极限封装的【接口自动化测试框架】震碎你的三观
随着互联网寒冬的到来,测试行业裁员的裁员,找工作的找工作,内卷越来越加剧,那么选择一个学习提升的平台尤为重要,接下来我要说的事情将震碎你的三观,震掉你的眼球,和每个测试人息息相关,测试人都必看. 先自 ...
- pytest接口自动化测试框架 | 用python代码测试接口
视频来源:B站<冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频[软件测试]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...
- 快速打造属于你的接口自动化测试框架
1 接口测试 接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. 接口自动化相对于UI自动化来说,属于更底层的测试,这样带来的好处就是测试收益更 ...
最新文章
- 端到端对话模型新突破!Facebook发布大规模个性化对话数据库
- 机器学习笔记:高斯判别分析
- php中嵌套调用的原理,嵌套调用
- 【Java】计算1!+2!+.....+20!的值
- sql server 2014 判断一个列某个字段是否相同_Select * from user的千层套路——一个sql是如何执行的...
- docker 厂商 容器_我终于不用再解释Docker了!
- arcpy 基于python制作六十进制与十进制互换的工具箱
- Linux下安装DB2数据库
- 莫言诺贝尔文学奖演讲全文:《讲故事的人》(推荐)
- 程序员要不要懂底层原理
- linux怎么查看hwaddr_linux下如何查看某个网卡当前使用的IP
- pytest常用参数
- apns 苹果服务器压力,[iOS]APNs推送机制
- 什么是应用分发?应用分发是什么?
- 让Unicode字符集少添麻烦
- C语言麻将递归,【算法SQL面试题】面试问题:麻将胡牌递归算… - 看准网
- kanzi 粒子插件
- dlib安装失败解决办法
- Linux Update
- paramiko使用