- 要想搭建一个接口自动化测试的框架至少要满足两个条件:
- 能够批量发送接口请求
- 能够拿到接口请求,并自动断言返回结果是否通过测试用例
- 在专栏的前几篇介绍过“使用test脚本进行返回结果断言”,本篇文章就来介绍在postman中使用“Collection Runner”批量发送接口请求。
(test 脚本介绍:Test script入门及校验接口返回值)
目录
一、Collection Runner使用方法
- “Collection Runner”是postman中批量运行接口集合的一个工具,支持以指定的顺序运行接口合集,并且记录请求测试结果。
1. 打开方式
- 共有三个位置可以打开“Collection Runner”
- 点击接口集合的“···”(更多)按钮,选择“Run collection”
- 从这个入口打开Runner页面,默认会显示该接口集合下的所有接口。
- 点击postman的界面底部按钮“Runner”
- 从这个入口打开Runner页面,需要手动再选择接口。
- 从这个入口打开Runner页面,需要手动再选择接口。
- 在集合的编辑页面,点击“Run”按钮
- 从这个入口打开Runner页面,也会显示该接口集合下的所有接口。
- 从这个入口打开Runner页面,也会显示该接口集合下的所有接口。
2. 运行前配置
- 在自动化运行脚本前可进行一些配置,具体可配置项如下图。
- 这里特别说明一下接口请求顺序:
- 默认情况下,请求将按照它们在集合中列出的顺序运行
- 但如果需要更改执行顺序,可以单击每个请求的左侧并拖动以移动它。
- 还可以通过取消选中其框来取消选择单个请求。
- 或者可以在Test脚本内内置函数postman.setNextRequest()来修改运行顺序。
(postman.setNextRequest():顾名思义,此函数允许为接口指定接下来运行哪个请求。)
- 在我写这篇文章的过程中,postman更新了一个新版本(Version 9.31.3),在Runner配置页面多了一个配置——“Choose how to run your collection”(选择如何运行你的集合)
- 这个配置默认选中,即运行方式为“Run manually” (在runner中运行这个集合)
- 从每个入口进入都会看到这个配置,对Runner的运行没有影响。
3. 运行及结果查看
- 点击“Run test”
- Postman实时显示请求执行和测试结果。在右侧显示每次运行的数字,单击以选择其中的一次运行结果。界面显示每个请求的概述,单击请求名称会显示有关执行的更多数据。
- 使用右上角的按钮查看运行摘要,摘要页面集合运行的每次迭代列出一列,可以一目了然地查看整个运行的测试输出。
- 测试结果也支持导出,导出的文件为JSON格式。
- 导出之后的文件无法重新导入postman。
二、批量设置断言
1. 集合(collection)、文件夹(folder)批量配置脚本
- Test Script和Pre-request Script不仅可以配置在一个接口下,同时可以配置在接口集合或文件夹下。
- 这样配置之后,集合或文件夹下所有的接口在请求时都将运行脚本。
- 集合(collection)脚本配置位置:
- 文件夹(folder)脚本配置位置:
- 脚本运行的顺序如下:
- 运行collection的“pre- request script” =>
- 运行folder的“pre- request script” =>
- 运行单个接口内的“pre- request script” =>
- 发送接口请求 =>
- 接收接口返回结果 =>
- 运行collection的“test script” =>
- 运行folder的“test script” =>
- 运行单个接口内的“test script”
2. 示例:批量校验接口返回状态码
- 在待测的接口合集下配置test脚本
- test脚本的内容如下:
pm.test("校验接口返回状态码为200", function () { pm.response.to.have.status(200); });
- 设置好之后批量运行集合接口
- 运行结果页会显示测试的结果
3. 示例:随机生成请求参数并在返回结果中校验
- 在专栏之前的文章介绍过,随机生成接口请求参数,及校验接口返回值
(往期文章:pre-request script入门及实现参数使用随机数
Test script入门及校验接口返回值) - 可以将这两种方法结合起来,并在Collection Runner中多次运行
- 以下面接口为例:
获取热搜词
URL:https://silkroad.csdn.net/api/v2/assemble/list/channel/search_hot_word?new_hot_flag=1&channel_name=pc_hot_word&size=4&platform=pc
- 请求参数中,查询参数“size”与返回结果中的“items”列表长度相对应。
- 脚本思路:使用pre-request script随机生成0-9的整数,赋值给接口URL的查询参数“size”。使用Test script校验返回结果中的“items”是否与查询参数“size”设置的值一致。脚本设置完成后,Collection Runner运行十次接口。
- pre-request script脚本:
var test = parseInt(Math.random()*9);
// 脚本是直接添加一个size的参数,所以如果运行脚本的话,要把URL参数中的“size”删除
pm.request.url.query.add({
'key':'size','value':test.toString()})
- Test script脚本:
pm.test("请求中随机生成size,校验返回结果中items长度是否符合size", function () {
var size = pm.request.url.query.get("size"); //获取size的value
var items_len = pm.response.json()["data"]["items"].length.toString() //获取items的长度
pm.expect(items_len).to.eql(size); // size值应该等于items的长度
});
- 设置Runner,运行次数为10:
- 运行结果:
- 这样就完成了随机生成请求参数并在返回结果中校验。
- 大家也可以尝试一下,这个接口是个GET请求,只需要填写URL就可以了
三、最后
- Collection Runner的存在,使得postman可以做为一个接口自动化测试的工具,并且配合脚本的使用,可以处理复杂的接口接口请求参数设置,或是返回结果的断言。
- 如果在日常工作中需要搭建一个接口自动化测试的框架,或是寻找一个自动化测试的工具,Postman的Collection Runner也不失为一种选择。
附录:postman系列文章目录
零基础入门接口功能测试教程-目录
—————————————————————————————————
postman系列文章内所使用的示例文件已经上传到了本人运营公众号【软件测试必备技能】
有需要可点击文章下发二维码,前往领取~