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框架实践相关推荐

  1. 接口自动化测试平台Lego ------ 美团接口自动化测试超全实践【3000字长文】

    一.概述 1.1 接口自动化概述 众所周知,接口自动化测试有着如下特点: 低投入,高产出. 比较容易实现自动化. 和UI自动化测试相比更加稳定. 如何做好一个接口自动化测试项目呢? 我认为,一个&qu ...

  2. 用Postman+Newman+Jenkins,0成本实现接口自动化测试

    本文目录: 一.是什么Newman 二.如何安装 三.如何使用 1.运行本地文件 2.运行在线文件 3.以node.js库运行 4.导出报告 四.命令行测试真实接口 1.导出collection文件 ...

  3. python接口自动化测试代码_python接口自动化测试二:python代码实现接口测试

    url = '接口地址' r = requests.get(url) #发送get请求 print(r.status_code) #打印状态码,若有重定向,返回的是重定向之后的代码 print(r.h ...

  4. Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

    一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm ...

  5. 【软件测试】接口自动化测试面试题及详细答案

    前言 最近看到网上流传着各种面试经验及面试题,往往都是一大堆技术题目贴上去,但是没有答案. 为此我业余时间整理了这份软件测试基础常见的面试题及详细答案,望各路大牛发现不对的地方不吝赐教,留言即可. 接 ...

  6. 测试面试集-Python接口自动化测试

    VOL 159 18 2020-09 今天距2021年104天 这是ITester软件测试小栈第159次推文 点击上方蓝字"ITester软件测试小栈"关注我,每周一.三.五早上  ...

  7. 零代码极限封装的【接口自动化测试框架】震碎你的三观

    随着互联网寒冬的到来,测试行业裁员的裁员,找工作的找工作,内卷越来越加剧,那么选择一个学习提升的平台尤为重要,接下来我要说的事情将震碎你的三观,震掉你的眼球,和每个测试人息息相关,测试人都必看. 先自 ...

  8. pytest接口自动化测试框架 | 用python代码测试接口

    视频来源:B站<冒死上传!pytest接口自动化测试框架(基础理论到项目实战及二次开发)教学视频[软件测试]> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! ...

  9. 快速打造属于你的接口自动化测试框架

    1 接口测试 接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. 接口自动化相对于UI自动化来说,属于更底层的测试,这样带来的好处就是测试收益更 ...

最新文章

  1. 端到端对话模型新突破!Facebook发布大规模个性化对话数据库
  2. 机器学习笔记:高斯判别分析
  3. php中嵌套调用的原理,嵌套调用
  4. 【Java】计算1!+2!+.....+20!的值
  5. sql server 2014 判断一个列某个字段是否相同_Select * from user的千层套路——一个sql是如何执行的...
  6. docker 厂商 容器_我终于不用再解释Docker了!
  7. arcpy 基于python制作六十进制与十进制互换的工具箱
  8. Linux下安装DB2数据库
  9. 莫言诺贝尔文学奖演讲全文:《讲故事的人》(推荐)
  10. 程序员要不要懂底层原理
  11. linux怎么查看hwaddr_linux下如何查看某个网卡当前使用的IP
  12. pytest常用参数
  13. apns 苹果服务器压力,[iOS]APNs推送机制
  14. 什么是应用分发?应用分发是什么?
  15. 让Unicode字符集少添麻烦
  16. C语言麻将递归,【算法SQL面试题】面试问题:麻将胡牌递归算… - 看准网
  17. kanzi 粒子插件
  18. dlib安装失败解决办法
  19. Linux Update
  20. paramiko使用

热门文章

  1. 拨开国产 COS 系统的重重迷雾
  2. 麦克斯韦方程组微分形式
  3. Interview100-91 著名的毒酒问题
  4. js运动小球碰壁反弹
  5. OSChina 周二乱弹 ——不许抽烟了,不然就分手!
  6. cad.net GeometricExtents出错了 调试看不到文字
  7. GAT-图注意力模型
  8. linux dns 自动识别,Linux 自动化部署DNS服务器
  9. 微信小程序讲解ppt(内附ppt资源及网易云api案例)
  10. 扫地机器人 杂牌_扫地机器人哪个牌子好?国产扫地机器人排行榜