一、BeanShell Sampler使用JS函數(shù)生成的日期月份小于10時(shí)是個(gè)位數(shù)
開始用的是:
"baseDate": "${__javaScript((new Date()).getFullYear()+'-'+ ((new Date()).getMonth()+1) + '-' + (new Date()).getDate(),)}"
生成的月份和日期小于10時(shí)都是個(gè)位數(shù)椅文,比如2018-9-8
如果接口文檔預(yù)期返回的格式是2018-09-08妓灌,則不匹配
- 一個(gè)辦法是琅摩,用java.util.Calendar類
import java.text.SimpleDateFormat;
import java.util.Calendar;
public String myDate(){
String res;
Calendar cal = Calendar.getInstance();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
res = simpleDateFormat.format(cal.getTime());
return res;
}
vars.put("baseDate",myDate());
- 一個(gè)辦法是厅各,用java.util.Date類
需注意 new Date(myYear-1900,month,day) 實(shí)際生成的月份是 month+1
需注意日期轉(zhuǎn)換
SimpleDateFormat("yyyy-MM-dd") 生成的結(jié)果日月個(gè)位時(shí)會(huì)在個(gè)位數(shù)前加0
SimpleDateFormat("yyyy-M-d") 生成的結(jié)果日月個(gè)位時(shí)就是個(gè)位數(shù)
二盗蟆、下游接口M發(fā)送請(qǐng)求和接口N返回值都用到同一字段A戈二,BeanShell Sampler事先設(shè)置好字段A
舉一反三,只要某字段是唯一固定的喳资,后面有很多地方用到觉吭,就可以事先把它設(shè)置好(通過獲取/新建),之后 ${name} 引用即可.
三仆邓、調(diào)用格式轉(zhuǎn)換函數(shù)鲜滩,注意函數(shù)參數(shù)的格式和傳參value值原來的格式
這個(gè)問題也是在生成日期進(jìn)行格式轉(zhuǎn)換時(shí)遇到的,當(dāng)時(shí)接口返回的createTime是個(gè)時(shí)間戳一串?dāng)?shù)字
時(shí)間戳轉(zhuǎn)換成年月日時(shí)分秒的函數(shù)如下:
import java.text.SimpleDateFormat;
import java.util.Date;
public String stampToDate(String s){
String res;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long lt = new Long(s);
Date date = new Date(lt);
res = simpleDateFormat.format(date);
return res;
}
重點(diǎn)來了,如果用以下這行代碼不能成功轉(zhuǎn)換节值,猜猜是為什么徙硅?
vars.put("createDateAndTime", stampToDate(String.valueOf(${createTime})));
1
2
3
想到了嗎?
因?yàn)?${createTime}
獲取到的是一串?dāng)?shù)字搞疗,此處傳參需要是個(gè)字符串~
解決方法很簡單 加上雙引號(hào) 變成字符串~即
vars.put("createDateAndTime", stampToDate(String.valueOf("${createTime}")));
四嗓蘑、需求明確返回內(nèi)容不能包含某字段,校驗(yàn)是否沒返回該字段匿乃,需事先特別設(shè)置
事例接口是獲取患者列表桩皿,有很多個(gè)患者(對(duì)象)。截圖只截了一部分如下:
接口運(yùn)行是通的幢炸,沒有報(bào)錯(cuò)业簿。
因?yàn)槟J(rèn)情況下,預(yù)期返回內(nèi)容"obj":[{a}]阳懂,實(shí)際返回內(nèi)容"obj":[{a},梅尤,{c}],后面多出的內(nèi)容不會(huì)去校驗(yàn)岩调。
注意a必須是第一個(gè)巷燥,如果預(yù)期返回內(nèi)容"obj":[{c},]号枕,實(shí)際返回內(nèi)容"obj":[{a},缰揪,{c}],則跑不通過葱淳。此時(shí)排序不確定只需要校驗(yàn)是否包含在返回值內(nèi)的話钝腺,則可以預(yù)期結(jié)果勾選“只檢查數(shù)組中數(shù)據(jù)是否包含在預(yù)期結(jié)果中”
如果需求明確是返回內(nèi)容不能包含某字段,需校驗(yàn)確實(shí)沒返回該字段赞厕,需事先設(shè)置艳狐。