JMeter—如何循環(huán)使用接口返回的多個(gè)值
在用JMeter做接口測(cè)試的時(shí)候,經(jīng)常會(huì)遇到這樣一種情況:一個(gè)接口請(qǐng)求返回了多個(gè)值,然后下一個(gè)接口想循環(huán)使用前一個(gè)接口的返回值;第二種情況:只想循環(huán)請(qǐng)求前一個(gè)接口返回值中的隨機(jī)不定長(zhǎng)度的某一些值(并不想用全部的)。
今天,我就和大家講解一下這兩種情況的其中一個(gè)情況,我們?nèi)绾斡肑Meter來(lái)實(shí)現(xiàn)的。
先說(shuō)第一種情況:一個(gè)接口請(qǐng)求返回了多個(gè)值,然后下一個(gè)接口想循環(huán)使用前一個(gè)接口的返回值。
需求:有一個(gè)獲取文件列表的接口,返回了所有的fileVersion,接下來(lái),我就想把所有fileVersion作為下個(gè)登錄接口用戶名登錄一遍。這種常見于企業(yè)中有一個(gè)獲取商品列表的接口,就想驗(yàn)證下所有的商品詳情信息是否都正常,是否存在無(wú)效商品。我們?cè)趺醋瞿?
一:首先,在我們的獲取文件信息列表接口,我們就在下面增加一個(gè)后置處理器——json提取器或正則提取器,提取所有fileVersion值。
二:我們?cè)偬砑右粋€(gè)邏輯控制 > 循環(huán)控制器。因?yàn)楂@取的fileVersion總數(shù)可能一直在變,不是一個(gè)固定值,所以,循環(huán)次數(shù)不能使用固定值。哪這個(gè)循環(huán)控制循環(huán)次數(shù)怎么配置呢?我們要使用上一步,json提取中變量名稱加_matchNr這樣的新變量。
三:在循環(huán)控制器下面添加print登錄http請(qǐng)求。那此時(shí)又有個(gè)新問(wèn)題了,有了循環(huán)次數(shù),接口每次調(diào)用的時(shí)候,接口參數(shù)中手機(jī)號(hào)碼如何自動(dòng)更新值呢?我就加個(gè)計(jì)時(shí)器函數(shù)。當(dāng)然,添加計(jì)時(shí)器也可以。userName的參數(shù)值寫入${_v(mobilephone${_counter(,)})},其中,_v()為連接函數(shù),mobilephone為json提取器生成的變量名稱,“_”為連接符,${_counter(,)}為計(jì)數(shù)器函數(shù)。
四,添加察看結(jié)果樹和匯總報(bào)告,點(diǎn)擊運(yùn)行,查看響應(yīng)結(jié)果。
總共有174個(gè)ffileVersion,最后,匯總報(bào)告中,顯示的總?cè)哟螖?shù)也是174,說(shuō)明我們的循環(huán)寫法沒(méi)有問(wèn)題。