编写jmeter测试用例_JMeter 编写接口测试用例遇到的问题及解决
一、BeanShell Sampler使用JS函數(shù)生成的日期月份小于10時是個位數(shù)
開始用的是:
"baseDate": "${__javaScript((new Date()).getFullYear()+'-'+ ((new Date()).getMonth()+1) + '-' + (new Date()).getDate(),)}"
生成的月份和日期小于10時都是個位數(shù),比如2018-9-8
如果接口文檔預(yù)期返回的格式是2018-09-08,則不匹配
一個辦法是,用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());
一個辦法是,用java.util.Date類
需注意 new Date(myYear-1900,month,day) 實際生成的月份是 month+1
需注意日期轉(zhuǎn)換
SimpleDateFormat("yyyy-MM-dd") 生成的結(jié)果日月個位時會在個位數(shù)前加0
SimpleDateFormat("yyyy-M-d") 生成的結(jié)果日月個位時就是個位數(shù)
日月是個位數(shù)生成的是兩位.png
日月是個位數(shù)生成的是一位.png
日月是兩位數(shù)生成的是兩位.png
二、下游接口M發(fā)送請求和接口N返回值都用到同一字段A,BeanShell Sampler事先設(shè)置好字段A
提前生成需要用的字段A.png
之后接口M請求用到此字段A.png
接口N返回值斷言用到字段A
舉一反三,只要某字段是唯一固定的,后面有很多地方用到,就可以事先把它設(shè)置好(通過獲取/新建),之后 ${name} 引用即可.
三、調(diào)用格式轉(zhuǎn)換函數(shù),注意函數(shù)參數(shù)的格式和傳參value值原來的格式
這個問題也是在生成日期進(jìn)行格式轉(zhuǎn)換時遇到的,當(dāng)時接口返回的createTime是個時間戳一串?dāng)?shù)字
時間戳是一串?dāng)?shù)字
時間戳轉(zhuǎn)換成年月日時分秒的函數(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;
}
重點來了,如果用以下這行代碼不能成功轉(zhuǎn)換,猜猜是為什么?
vars.put("createDateAndTime", stampToDate(String.valueOf(${createTime})));
1
2
3
想到了嗎?
因為 ${createTime} 獲取到的是一串?dāng)?shù)字,此處傳參需要是個字符串~
解決方法很簡單 加上雙引號 變成字符串~即
vars.put("createDateAndTime", stampToDate(String.valueOf("${createTime}")));
四、需求明確返回內(nèi)容不能包含某字段,校驗是否沒返回該字段,需事先特別設(shè)置
事例接口是獲取患者列表,有很多個患者(對象)。截圖只截了一部分如下:
接口返回的數(shù)組里有多個對象
斷言只是其中一個對象
接口運行是通的,沒有報錯。
因為默認(rèn)情況下,預(yù)期返回內(nèi)容"obj":[{a}],實際返回內(nèi)容"obj":[{a},{b},{c}],后面多出的內(nèi)容不會去校驗。
注意a必須是第一個,如果預(yù)期返回內(nèi)容"obj":[{c},{b}],實際返回內(nèi)容"obj":[{a},{b},{c}],則跑不通過。此時排序不確定只需要校驗是否包含在返回值內(nèi)的話,則可以預(yù)期結(jié)果勾選“只檢查數(shù)組中數(shù)據(jù)是否包含在預(yù)期結(jié)果中”
如果需求明確是返回內(nèi)容不能包含某字段,需校驗確實沒返回該字段,需事先設(shè)置。
斷言里面設(shè)置好預(yù)期不存在的字段
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的编写jmeter测试用例_JMeter 编写接口测试用例遇到的问题及解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 伦镍交割日期,2022年3月23日
- 下一篇: go float64 转int_深挖Go