研究這個的目的是:若是返回信息是比較複雜的,須要對返回信息中數據以及數據的層級作斷言javascript
我找了一些咱們的接口,層級關係都太簡單了,最複雜的就是這兩個了:【並且都是get接口,原來get接口還要增長測試點啊~^_^】java
或者獲取json數據的值,又如何看出層級關係呢?shell
說說思路吧:json
1. 我之前沒有考慮過這個問題,咋一問我也想不起來,想着要寫beanshell來處理了吧,心裏是抗拒的。但若是必需要校驗,也只能慢慢研究寫了;post
2.研究過程當中【先百度嘛^_^】,恰巧昨天看到Postman中對json數據處理邏輯,對返回信息中json數據能夠以下操做,這是postman提供的功能,內心尋思着beanshell按照此邏輯一步步寫,將每一個第一層取出判斷,再到第二層[2].xx,一層層作判斷;測試
3. 那萬一由於返回信息json內容不同,有的返回10個元素,有的不作返回(好比null默認不返回),那豈不是要報錯【看來得和開發確認好】;spa
4.Json默認返回,即便某個字段爲null, 也是返回的,好比 name:null插件
try{3d
var jsonData = pm.response.json();code
} catch (e) {
console.log("No body");
}
pm.environment.unset("fileID");
pm.environment.set("fileID", jsonData.id);
{ "resCode":"000", "resMsg":"success", "customerData": { "cardnum":"6275980334267422136", "name":"小******", "idcard":"3206831989********", "mobile":"1896****440", "address":"江蘇省南通市崇川區紫琅路*****Room*****SS", "zip":"226000", "email":"testotest1@***", "preferstore":"856" } }
{ "resCode":"000", "resMsg":"success", "couponData": [ { "coupid":3071, "coupname":"全國券1", "coupcontent":"<div id='print_form' class='print_form' style='display:none;'><div id='coupcontent' style='font-family:YaHei IKEA;width:300px;word-wrap:break-word;'>全國券1</div></div>", "barcode":"1234567890", "startdate":"2018-01-03 00:00:00", "enddate":"2019-03-10 23:59:59", "state":"審批經過", "apv_status":null, "isDefault":0 }, { "coupid":3072, "coupname":"全國券2", "coupcontent":"<div id='print_form' class='print_form' style='display:none;'><div id='coupcontent' style='font-family:YaHei IKEA;width:300px;word-wrap:break-word;'>全國券2</div></div>", "barcode":"1234567890", "startdate":"2018-01-03 00:00:00", "enddate":"2021-01-28 23:59:59", "state":"審批經過", "apv_status":null, "isDefault":0 }, { "coupid":3073, "coupname":"全國券3", "coupcontent":"<div id='print_form' class='print_form' style='display:none;'><div id='coupcontent' style='font-family:YaHei IKEA;width:300px;word-wrap:break-word;'>全國券3</div></div>", "barcode":"1234567890", "startdate":"2018-01-03 00:00:00", "enddate":"2022-02-24 23:59:59", "state":"審批經過", "apv_status":null, "isDefault":0 } ] }
Step1: Jmeter自帶了這個json提取器,至少個人Jmeter4.0有,以前的版本應該能夠下載插件獲取
元件名稱:JSON Extractor
假設下面是個人返回json
{"resCode":"000","resMsg":"ok","resCardNum":"6275980334267422623"}
元件配置信息須要以下:
而後用beanshell獲取這個變量驗證一下:beanshell中用${定義的變量名}
加個Debug Sampler進行驗證下,助於理解JSON Extractor的使用
以下是獲取的返回json信息中的卡號信息:
Step2: 對於複雜的json操做
漸進明朗了,json該怎麼操做就怎麼操做唄,重點就是標紅框的部分,下一級[1].xx獲取便可
Step3: 無論是簡單的json仍是複雜的json,對於已經提取出來的變量進行斷言,這邊就用BeanShell Assertion
Step4: 剛剛看到有JSON Assertion, 好像有條新大陸了,^_^,Jmeter真是你永遠都在發掘它的潛能~~
須要點擊Additionally assert value,而後才能網Excepted Value下輸入指望值
我隨便輸入了字符串bbbb和實際的卡號不符合,全部報錯了~