robotframework是一款关键字自动化测试框架,可能做各种类型的自动化测试。本文介绍通过 robotframework 来实现接口测试。
目录
01、安装接口请求的第三方库
02、接口关键字基础
1. 创建测试集合并导入接口库
2. get接口
3. post 表单接口
4. post json接口
5. put 接口
6. delete 接口
7. 文件上传
8. 文件下载接口
9. 需要签名验证的接口
11. token关联
03、rf数据驱动实现接口测试
1. 安装数据驱动依赖库
2. 准备测试数据文件
3. 创建测试集合并导入第三方库
4. 创建集合变量并初始化session
5. 创建登录接口关键字
6. 创建测试用例引用数据驱动
pip install robotframework-requests |
在python安装目录的Lib\site-packages可以看到
robotframework-requests关键字文档地址:http://marketsquare.github.io/robotframework-requests/doc/RequestsLibrary.html
以码同学全栈接口项目中的以下接口为例:
创建一个测试集合apibasic,选中后在设置区导入RequestsLibrary库
测试集合下添加集合全局变量host,作为接口测试的域名
在该集合下将会针对码同学全栈接口项目中的接口进行测试,每个接口的域名都是一致的,因此我们给测试集合增加一个前置动作,前置动作里完成该域名下session的创建,那么在用例之中发起请求时都使用该session,可以帮我们有效关联相关数据
关键信息解释,创建一个session对象,命名为pinter:
Create Sesion:这是接口库提供的一个关键字,用来创建一个session对象
pinter:这是自定义起的一个session对象的名字,用于后续其他地方要使用时进行引用
${host}:这是引用集合变量定义的host
创建一个用例,起名叫get接口
Get On Session:发起get请求的关键字
${resp.json()}[message]:表示提取接口响应body体重的message字段
创建一个用例,起名叫post表单接口
Post On Session:发起post请求的关键字
由于json格式参数通常比较多,所以我们将他定义成了普通变量,但是接口关键字请求时json参数 必须是字典格式,所以使用Evaluate关键字将字符串形式的json参数转换成字典
表单形式上传
Get File For Streaming Upload:获取本地文件转换成流对象
${resp.text}:因为该接口返回信息并不是json串,是个纯文本,所以使用这种方式获取
Ajax上传接口
接口参数格式如下,其中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))
脚本如下:
在使用相同的session对象时,会自动做到cookie关联
先实现登录接口的用例,再实现查询余额接口的测试,然后两个一起执行即可
一起执行,勾选两条用例
对于接口鉴权采用token时,即便采用相同的session对象也是关联不了的,需要我们自行处理
业务规则:
登录接口成功后响应信息中的data字段就是产生的token值
查询余额接口请求时headers中的testfan-token字段就是token参数名称
因此我们需要从登录接口响应中提取data,并将其传给查询余额的接口headers
脚本如下:
pip install robotframework-datadriver |
在python安装目录的Lib\site-packages可以看到
以码同学全栈接口项目的一个登录接口为例,准备测试数据
创建一个excel文件写入如下数据:
第一行第一列是固定格式,表示测试用例名称
第二列开始是测试数据对应的变量名称
第二行开始是测试数据
创建测试集合apidatadriver,导入库RequestsLibrary和DataDriver,注意导入DataDriver时要写参数,导入后标红的话先不用管,继续做
测试用例中只需要在设置的模板中填写第5步创建的登录接口关键字即可
执行测试,测试数据有三组,登录接口也执行了三次
学习安排上!
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…..关注下方我的微信公众号【程序员小濠】免费获取~