【接口工具ApiPost】预后执行脚本、断言、测试验证定义使用(5)

141 阅读3分钟

脚本语法

JavaScript语法规则

实现功能有:

  1. 测试(断言)请求返回结果的正确性(后置脚本)。
  2. 动态修改接口请求参数,如增加接口签名参数等(前置脚本)。
  3. 接口请求之间传递数据(使用脚本操作变量)。
  4. 脚本中可以直接请求一个接口地址。

例子:在预执行脚本中定义一个函数_random

function _random(){
    return '你好,中国' + Math.random();
}
//使用
apt.globals.set("random_var", _random());

预后执行脚本都可定义、获取、删除、清空环境变量、全局变量等

例子如下:

apt.variables.set("key", "value"); // 设置一个值为value的环境变量key
apt.variables.get("key"); // 获取环境变量key的值
apt.variables.delete("key"); // 删除环境变量key
apt.variables.clear(); // 清空定义的全部环境变量

apt.globals.set("key", "value");  // 设置一个值为value的全局变量key
apt.globals.get("key");  // 设置一个值为value的全局变量key
apt.globals.delete("key");  // 设置一个值为value的全局变量key
apt.globals.clear(); // 清空定义的全部全局变量

后执行脚本还可进行断言和响应结果数据可视化设置

断言

1、断言定义

2、断言验证

返回响应数据如下

{
	"code": 10000,
	"msg": "success",
	"data": {
		"cur_page": "1",
		"last_page": 2,
		"page_size": "20",
		"total": 30,
		"list": [
			{
				"id": 3,
				"title": "前后仅用了4分钟,16枚洲际导弹应声而出,美航母也不敢轻举妄动",
				"author": "烽火杂志",
				"url": "https://open.apipost.cn/",
				"content": "世界上哪个国家可与美军抗衡?国际社会上关于这一问题的答案千奇百怪,但有一个国家用行动让美军闭嘴,短短4分钟连续发射16枚洲际导弹,场面十分壮观,让西方国家畏惧不已,即便是美航母也不敢轻举妄动。"
			}
		]
	}
}

定义:在后执行脚本里添加;

特别注意:每个测试用例是一行,不能换行。

apt.assert('response.raw.responseText=="test"');
apt.assert('response.raw.status==200');
apt.assert('response.raw.type=="json"');
apt.assert('response.raw.responseTime>=100');
apt.assert('response.json.errcode==1');
apt.assert('response.json.errcode!=1');
apt.assert('response.json.errcode>=1');
apt.assert('response.json.errcode==null');
apt.assert('response.json.errcode!=null');
apt.assert('response.headers["server"] == "nginx"');
apt.assert('response.headers["content-encoding"] == "gzip"');

验证结果:

绿色表示测试通过,红色表示测试不通过

【补充】集合(list)验证

定义:

//验证集合list测试用例定义;  
// 笔者暂时还没有找到添加断言业务描述的参数方法,一般断言有断言描述和断言表达式。但这个语法上好像不支持。
// 后期如果找到一并补充上
if(response.json.hasOwnProperty("data")){
    // apt.assert('response.raw.responseText=="test"');
    if(response.json.data.hasOwnProperty("list")
        && response.json.data.list.length>0){
        //  apt.assert('response.raw.responseText=="test"');
         for(var i=0;i<response.json.data.list.length;i++){
            apt.assert(true,"i="+i);
            var item=response.json.data.list[i];
            response.json.data.item=item;
            apt.assert('response.json.data.item.hasOwnProperty("id")');
            apt.assert('response.json.data.item.hasOwnProperty("title")');
            apt.assert('response.json.data.item.hasOwnProperty("author")');
            apt.assert('response.json.data.item.hasOwnProperty("url")');
            apt.assert('response.json.data.item.hasOwnProperty("content")');
         }
    }
}

笔者暂时还没有找到添加断言业务描述的参数方法,一般断言有断言描述和断言表达式。但这个语法上好像不支持。后期如果找到一并补充上

好用的Api工具推荐

历时一年半多开发终于smartApi-v1.0.0版本在2023-09-15晚十点正式上线 smartApi是一款对标国外的postman的api调试开发工具,由于开发人力就作者一个所以人力有限,因此v1.0.0版本功能进行精简,大功能项有:

  • api参数填写
  • api请求响应数据展示
  • PDF形式的分享文档
  • Mock本地化解决方案
  • api列表数据本地化处理
  • 再加上UI方面的打磨 本地运行,性能优越,高效,快捷

下面是一段smartApi使用介绍: 在这里插入图片描述

下载地址

pan.baidu.com/s/1WGaIDYQv…