腳本語(yǔ)法
JavaScript語(yǔ)法規(guī)則
實(shí)現(xiàn)功能有:
測(cè)試(斷言)請(qǐng)求返回結(jié)果的正確性(后置腳本)。
動(dòng)態(tài)修改接口請(qǐng)求參數(shù)愈案,如增加接口簽名參數(shù)等(前置腳本)挺尾。
接口請(qǐng)求之間傳遞數(shù)據(jù)(使用腳本操作變量)。
腳本中可以直接請(qǐng)求一個(gè)接口地址刻帚。
例子:在預(yù)執(zhí)行腳本中定義一個(gè)函數(shù)_random
function _random(){
return '你好潦嘶,中國(guó)' + Math.random();
}
//使用
apt.globals.set("random_var", _random());
預(yù)后執(zhí)行腳本都可定義、獲取崇众、刪除掂僵、清空環(huán)境變量、全局變量等
例子如下:
apt.variables.set("key", "value"); // 設(shè)置一個(gè)值為value的環(huán)境變量key
apt.variables.get("key"); // 獲取環(huán)境變量key的值
apt.variables.delete("key"); // 刪除環(huán)境變量key
apt.variables.clear(); // 清空定義的全部環(huán)境變量
apt.globals.set("key", "value"); // 設(shè)置一個(gè)值為value的全局變量key
apt.globals.get("key"); // 設(shè)置一個(gè)值為value的全局變量key
apt.globals.delete("key"); // 設(shè)置一個(gè)值為value的全局變量key
apt.globals.clear(); // 清空定義的全部全局變量```
后執(zhí)行腳本還可進(jìn)行斷言和響應(yīng)結(jié)果數(shù)據(jù)可視化設(shè)置
斷言
1顷歌、斷言定義
2锰蓬、斷言驗(yàn)證
返回響應(yīng)數(shù)據(jù)如下
{
"code": 10000,
"msg": "success",
"data": {
"cur_page": "1",
"last_page": 2,
"page_size": "20",
"total": 30,
"list": [
{
"id": 3,
"title": "前后僅用了4分鐘,16枚洲際導(dǎo)彈應(yīng)聲而出眯漩,美航母也不敢輕舉妄動(dòng)",
"author": "烽火雜志",
"url": "https://open.apipost.cn/",
"content": "世界上哪個(gè)國(guó)家可與美軍抗衡芹扭?國(guó)際社會(huì)上關(guān)于這一問(wèn)題的答案千奇百怪,但有一個(gè)國(guó)家用行動(dòng)讓美軍閉嘴赦抖,短短4分鐘連續(xù)發(fā)射16枚洲際導(dǎo)彈舱卡,場(chǎng)面十分壯觀,讓西方國(guó)家畏懼不已队萤,即便是美航母也不敢輕舉妄動(dòng)轮锥。"
}
]
}
}
定義:在后執(zhí)行腳本里添加;
特別注意:每個(gè)測(cè)試用例是一行要尔,不能換行舍杜。
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"');
驗(yàn)證結(jié)果:
綠色表示測(cè)試通過(guò),紅色表示測(cè)試不通過(guò)
【補(bǔ)充】集合(list)驗(yàn)證
定義:
//驗(yàn)證集合list測(cè)試用例定義;
// 筆者暫時(shí)還沒(méi)有找到添加斷言業(yè)務(wù)描述的參數(shù)方法赵辕,一般斷言有斷言描述和斷言表達(dá)式既绩。但這個(gè)語(yǔ)法上好像不支持。
// 后期如果找到一并補(bǔ)充上
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")');
}
}
}
筆者暫時(shí)還沒(méi)有找到添加斷言業(yè)務(wù)描述的參數(shù)方法还惠,一般斷言有斷言描述和斷言表達(dá)式饲握。但這個(gè)語(yǔ)法上好像不支持。后期如果找到一并補(bǔ)充上