最近一直忙於AI模型的准確率任務中,這種操作需要大量的數據才能計算出模型的准確率。所以這里問遇到的問題和之前數據隨機參數化有點不同,之前的參數比如說用戶姓名或用戶身份證號,這樣數據可以在postman中直接用代碼隨機生成,可以參考postman接口測試系列:基本操作總結 ,但是此處采用的是本地文件參數化,和jmeter的csv參數化比較類似。
先來看一下單個食物識別的接口信息:
https://api.ty.com/food_detect
而參數主要是
msg:西紅柿雞蛋面
響應結果如下:
[
{
"properties": {
"cal_name": "雞",
"e_type": "food",
"end_index": 1,
"food_id": 6014,
"kcal_unit_weight": 167.0,
"name": "雞",
"start_index": 0,
"time_stamp": 1567236416
},
"sub_properties": {
"grams": 150.0,
"is_default": true,
"quantifier_id": 35,
"quantity": 1.0,
"unit": "盤"
},
"type": "Entity"
}
]
這里斷言的主要是響應結果中的cal_name和name名稱一致,則響應結果正確;參考代碼如下:
if(responseCode.code === 200 & responseBody !== null & responseBody.has("cal_name") ){
// 判斷是否存在 'success' 值
tests["Body matches cal_name"] = responseBody.has("cal_name");
var jsonData = JSON.parse(responseBody);
//保存食物AI名稱
pm.globals.set("ai_cal_name", jsonData[0].properties.cal_name);
pm.globals.get("ai_cal_name")
console.log(pm.globals.get("ai_cal_name"))
//保存食物輸入名稱
pm.globals.set("ai_name", jsonData[0].properties.name);
pm.globals.get("ai_name")
console.log(pm.globals.get("ai_name"))
if(pm.globals.get("ai_cal_name")===pm.globals.get("ai_name")){
console.log("success")
}else{
console.log("false")
}
tests["名稱是否一致"]=pm.globals.get("ai_cal_name")===pm.globals.get("ai_name")
//postman.setGlobalVariable("bk_id",jsonData.id);
tests[`[INFO] Request params: ${JSON.stringify(request.id)}`] = true;
//tests["have result "]=jsonData.hasOwnProperty("error")!==true;
//tests["have cal_name "]=jsonData.hasOwnProperty("cal_name")===true;
tests[`[INFO] Response timeout: ${responseTime}`] = responseTime < 6000;
}else{
//接口請求失敗
tests["Waring:Request Failed. Please Fix!"] = false;
}
單獨一個食物,接口測試就這樣操作完成了,但是如果需要N個食物,那么該如何操作呢?所以這里就用到了類似jmeter中的csv的參數化的方式,可以直接把需要的食物名稱保存在本地文件中,格式如下
[
{"msg":"干煸四季豆"},
{"msg":"紅油蒜泥肘花"},
{"msg":"鐵板豆腐"},
{"msg":"口水豬肝"},
{"msg":"魔芋鴨子"},
{"msg":"麻辣魚"},
{"msg":"魔芋燒鴨"},
{"msg":"魚香杏鮑菇"},
{"msg":"重慶豆花魚"},
{"msg":"麻婆豆腐"},
{"msg":"四川泡菜魚"},
{"msg":"四川燒白"},
{"msg":"姜爆鴨子"},
{"msg":"麻辣冷吃兔"},
{"msg":"香辣豉香干鍋花菜"},
{"msg":"口水雞"},
{"msg":"重慶酸菜魚"},
{"msg":"豆花雞"},
{"msg":"什錦鳳爪"},
{"msg":"海鮮粉絲煲"},
{"msg":"金針菇培根卷"},
{"msg":"糖醋里脊"},
{"msg":"糖醋荷包蛋"},
{"msg":"椒麻雞"},
{"msg":"芝麻醬秋葵"},
{"msg":"干鍋辣子雞"},
{"msg":"清蒸多寶魚"},
{"msg":"絲瓜木耳炒雞蛋"},
{"msg":"土豆燉大排"},
{"msg":"肉末番茄豆腐"},
{"msg":"豇豆炒肉絲"},
{"msg":"拔絲地瓜"},
{"msg":"紅燒茄子"},
{"msg":"香辣土豆絲"},
{"msg":"雞絲青瓜涼面"},
{"msg":"白灼秋葵"},
{"msg":"土豆紅燒肉"},
{"msg":"三文魚南瓜米粉"},
{"msg":"宮保雞丁"},
{"msg":"可樂雞翅"},
{"msg":"五香毛豆"},
{"msg":"肉絲燜面"},
{"msg":"剁椒魚頭"},
{"msg":"蒜香香菇"},
{"msg":"芙蓉蝦仁"},
{"msg":"白灼牛肉"},
{"msg":"白切雞"},
{"msg":"臘腸煲仔飯"},
{"msg":"雞肉河粉"},
{"msg":"椰子燉雞"},
{"msg":"炒黃豆芽"},
{"msg":"白灼蝦"},
{"msg":"三蔬超意大利面"},
{"msg":"蒸釀苦瓜"},
{"msg":"韭菜炒雞蛋"},
{"msg":"土豆燉大白菜"},
{"msg":"麻辣雞腿"},
{"msg":"山楂糖葫蘆"},
{"msg":"冷面"},
{"msg":"茄子燉豆角"},
{"msg":"地三鮮"},
{"msg":"炸醬面"},
{"msg":"西紅柿燉羊排"},
{"msg":"燒餅"},
{"msg":"五花肉燉四季豆"},
{"msg":"酸辣土豆絲"},
{"msg":"蚝油排骨"},
{"msg":"香菇土豆燉雞腿"},
{"msg":"酸菜豬肉餃子"},
{"msg":"蜂蜜麻花"},
{"msg":"四喜丸子"},
{"msg":"小雞燉蘑菇"},
{"msg":"鍋包肉"},
{"msg":"紅燒肉"},
{"msg":"豬肉燉粉條"},
{"msg":"水晶鮭魚"},
{"msg":"白豆腐"},
{"msg":"紅燒鹿肉"},
{"msg":"五香醬牛肉"},
{"msg":"糖醋苦瓜"},
{"msg":"西紅柿燜牛肉"},
{"msg":"火腿白菜"}
]
這里是單獨一個入參,如果是多個入參,可以根據格式修改,格式要求是[],那么接下來就是講代碼中的如下名稱修改為變量
msg:{{msg}}
然后接下來就是postman中操作:
- 點擊"Runner"
- 選擇需要批量執行的接口
- 選中參數化的文件,可以點擊"Preview"預覽數據信息
如下所示:
如下圖,顯示的就是批量運行接口的結果,這樣相對來說比較容易統計出錯率,計算模型准確率比較簡單~
總結:以上就是postman參數化的簡單操作,相對來說比較簡單~