脚本语法
JavaScript语法规则
实现功能有:
测试(断言)请求返回结果的正确性(后置脚本)。
动态修改接口请求参数,如增加接口签名参数等(前置脚本)。
接口请求之间传递数据(使用脚本操作变量)。
脚本中可以直接请求一个接口地址。
例子:在预执行脚本中定义一个函数_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")');
}
}
}
笔者暂时还没有找到添加断言业务描述的参数方法,一般断言有断言描述和断言表达式。但这个语法上好像不支持。后期如果找到一并补充上