0代码实现接口自动化测试-RF框架实践

robotframework是一款关键字自动化测试框架,可能做各种类型的自动化测试。本文介绍通过 robotframework 来实现接口测试

目录

01、安装接口请求的第三方库

02、接口关键字基础

1. 创建测试集合并导入接口库

2. get接口

3. post 表单接口

4. post json接口

5. put 接口

6. delete 接口

7. 文件上传

8. 文件下载接口

9. 需要签名验证的接口

10. cookie关联

11. token关联

03、rf数据驱动实现接口测试

1. 安装数据驱动依赖库

2. 准备测试数据文件

3. 创建测试集合并导入第三方库

4. 创建集合变量并初始化session

5. 创建登录接口关键字

6. 创建测试用例引用数据驱动


01、安装接口请求的第三方库

pip install robotframework-requests

在python安装目录的Lib\site-packages可以看到

0代码实现接口自动化测试-RF框架实践_第1张图片

02、接口关键字基础

robotframework-requests关键字文档地址:http://marketsquare.github.io/robotframework-requests/doc/RequestsLibrary.html

以码同学全栈接口项目中的以下接口为例:

0代码实现接口自动化测试-RF框架实践_第2张图片

1. 创建测试集合并导入接口库

创建一个测试集合apibasic,选中后在设置区导入RequestsLibrary库

0代码实现接口自动化测试-RF框架实践_第3张图片

测试集合下添加集合全局变量host,作为接口测试的域名

0代码实现接口自动化测试-RF框架实践_第4张图片

在该集合下将会针对码同学全栈接口项目中的接口进行测试,每个接口的域名都是一致的,因此我们给测试集合增加一个前置动作,前置动作里完成该域名下session的创建,那么在用例之中发起请求时都使用该session,可以帮我们有效关联相关数据

关键信息解释,创建一个session对象,命名为pinter

  • Create Sesion:这是接口库提供的一个关键字,用来创建一个session对象

  • pinter:这是自定义起的一个session对象的名字,用于后续其他地方要使用时进行引用

  • ${host}:这是引用集合变量定义的host

0代码实现接口自动化测试-RF框架实践_第5张图片

2. get接口

创建一个用例,起名叫get接口

  • Get On Session:发起get请求的关键字

  • ${resp.json()}[message]:表示提取接口响应body体重的message字段

0代码实现接口自动化测试-RF框架实践_第6张图片

3. post 表单接口

创建一个用例,起名叫post表单接口

  • Post On Session:发起post请求的关键字

0代码实现接口自动化测试-RF框架实践_第7张图片

4. post json接口

由于json格式参数通常比较多,所以我们将他定义成了普通变量,但是接口关键字请求时json参数 必须是字典格式,所以使用Evaluate关键字将字符串形式的json参数转换成字典

0代码实现接口自动化测试-RF框架实践_第8张图片

5. put 接口

0代码实现接口自动化测试-RF框架实践_第9张图片

6. delete 接口

0代码实现接口自动化测试-RF框架实践_第10张图片

7. 文件上传

表单形式上传

  • Get File For Streaming Upload:获取本地文件转换成流对象

  • ${resp.text}:因为该接口返回信息并不是json串,是个纯文本,所以使用这种方式获取

0代码实现接口自动化测试-RF框架实践_第11张图片

Ajax上传接口

0代码实现接口自动化测试-RF框架实践_第12张图片

8. 文件下载接口

0代码实现接口自动化测试-RF框架实践_第13张图片

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))

脚本如下:

0代码实现接口自动化测试-RF框架实践_第14张图片

10. cookie关联

在使用相同的session对象时,会自动做到cookie关联

先实现登录接口的用例,再实现查询余额接口的测试,然后两个一起执行即可

0代码实现接口自动化测试-RF框架实践_第15张图片

一起执行,勾选两条用例

0代码实现接口自动化测试-RF框架实践_第16张图片

11. token关联

对于接口鉴权采用token时,即便采用相同的session对象也是关联不了的,需要我们自行处理

业务规则:

  • 登录接口成功后响应信息中的data字段就是产生的token值

  • 查询余额接口请求时headers中的testfan-token字段就是token参数名称

因此我们需要从登录接口响应中提取data,并将其传给查询余额的接口headers

脚本如下:

0代码实现接口自动化测试-RF框架实践_第17张图片

0代码实现接口自动化测试-RF框架实践_第18张图片

03、rf数据驱动实现接口测试

1. 安装数据驱动依赖库

 pip install robotframework-datadriver

在python安装目录的Lib\site-packages可以看到

0代码实现接口自动化测试-RF框架实践_第19张图片

2. 准备测试数据文件

以码同学全栈接口项目的一个登录接口为例,准备测试数据

创建一个excel文件写入如下数据:

0代码实现接口自动化测试-RF框架实践_第20张图片

  • 第一行第一列是固定格式,表示测试用例名称

  • 第二列开始是测试数据对应的变量名称

  • 第二行开始是测试数据

3. 创建测试集合并导入第三方库

创建测试集合apidatadriver,导入库RequestsLibrary和DataDriver,注意导入DataDriver时要写参数,导入后标红的话先不用管,继续做

0代码实现接口自动化测试-RF框架实践_第21张图片

4. 创建集合变量并初始化session

0代码实现接口自动化测试-RF框架实践_第22张图片

5. 创建登录接口关键字

0代码实现接口自动化测试-RF框架实践_第23张图片

6. 创建测试用例引用数据驱动

测试用例中只需要在设置的模板中填写第5步创建的登录接口关键字即可

0代码实现接口自动化测试-RF框架实践_第24张图片

执行测试,测试数据有三组,登录接口也执行了三次

0代码实现接口自动化测试-RF框架实践_第25张图片

学习安排上!

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走


这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…..关注下方我的微信公众号【程序员小濠】免费获取~

你可能感兴趣的:(技术分享,自动化测试,干货分享,软件测试,测试工程师,功能测试,自动化测试,自动化测试框架)