csvRead函數(shù)是從外部讀取參數(shù),csvRead函數(shù)可以從一個(gè)文件中讀取多個(gè)參數(shù)。
下面具體講一下如何使用csvread函數(shù):
1. 新建一個(gè)csv或者text文件,里面保存要讀取的參數(shù),每個(gè)參數(shù)間用逗號(hào)相隔。每行表示每一組參數(shù),每列表示每種參數(shù):
比如
admin,123
manager,456
2. 打開(kāi)Jmeter的函數(shù)助手,選擇csvread函數(shù),如下圖所示:
其中:
CSV file to get values from | *alias:要讀取的文件路徑,應(yīng)該是絕對(duì)路徑
CSV文件列號(hào)| next| *alias:從第幾列開(kāi)始讀取,注意第一列是0
點(diǎn)擊生成按鈕,則生成了函數(shù),在上圖中則為:${__CSVRead(D:"login.txt,1)}csvread就是從login.txt文件中讀取第一列的參數(shù)。以此類推。
3. 將生成的參數(shù)拷貝到需要參數(shù)化的參數(shù)的值一項(xiàng)中,如果要修改要讀取的參數(shù)的列,則可以直接在參數(shù)值中修改數(shù)字而不用重新在csvread函數(shù)生成中修改。
4 . jmeter執(zhí)行的時(shí)候,如果有多個(gè)線程,順序讀取第一行的數(shù)字,如果線程組多余文件中的行數(shù),則循環(huán)讀取。
5. 利用該功能,可以實(shí)現(xiàn)不同參數(shù)需要不同參數(shù)值的問(wèn)題,只需要在需要參數(shù)化的地方將生成的CSVRead函數(shù)字符串粘貼過(guò)去,然后修改表示第幾列的數(shù)字就可以了。
“_ StringFromFile”函數(shù)
功能:這個(gè)函數(shù)是從一個(gè)文件中取到一個(gè)字符串,這個(gè)函數(shù)和LoadRunner中的File變量差不多,不過(guò)LoadRunner可以直接從數(shù)據(jù)庫(kù)中查詢記錄,自動(dòng)生成文件,而Jmeter需要我們借助第三方工具生成文本作用:可以用來(lái)實(shí)現(xiàn)參數(shù)化http請(qǐng)求發(fā)送的參數(shù),使得在Jmeter運(yùn)行時(shí)參數(shù)化了的參數(shù)在每個(gè)線程讀取不同的內(nèi)容。如果某個(gè)參數(shù)每次發(fā)送請(qǐng)求的時(shí)候不能重復(fù)才可以存儲(chǔ)到數(shù)據(jù)庫(kù)中,則用這個(gè)功能十分方便。
使用:
1. 首先需要一個(gè)文本文件,可以手工生成,也可以通過(guò)數(shù)據(jù)庫(kù)查詢工具查出結(jié)果,然后拷貝到一個(gè)文本文件中。
2. 點(diǎn)擊Jmeter的“選項(xiàng)”,選擇“函數(shù)助手對(duì)話框”(或者使用快捷鍵“Ctrl+F”),在“選擇一個(gè)功能”的下拉框中選擇“_ StringFromFile”
3. 設(shè)置“_ StringFromFile”函數(shù)的值,具體如下:
ü 輸入文件的全路徑:輸入前面生成的文件的完整路徑,即文件路徑+文件名.擴(kuò)展名(文件路徑可以寫(xiě)成相對(duì)路徑或絕對(duì)路徑,默認(rèn)讀取位置為/bin下)
ü 函數(shù)名稱:輸入某個(gè)名稱,用于存儲(chǔ)在測(cè)試計(jì)劃中其他的方式使用的值。
ü 文件開(kāi)始結(jié)束序號(hào):第三,第四個(gè)參數(shù)是文件開(kāi)始的序號(hào),也就是文件讀取的其起始行數(shù)。第四個(gè)參數(shù)是文件的結(jié)束序號(hào),也就是要讀取文件的最后行。假如咱們生成的文本文件有200行,如果開(kāi)始序號(hào)設(shè)置成50,結(jié)束行設(shè)置成150,那么這個(gè)函數(shù)會(huì)按順序從第50行,一直讀取到150行,如果測(cè)試的循環(huán)次數(shù)超過(guò)了文件行數(shù),比如循環(huán)了102次,那么最后一次循環(huán)讀取的文件內(nèi)容和第一次的一樣,函數(shù)會(huì)自動(dòng)循環(huán)讀取。文件的起始序號(hào)和結(jié)束序號(hào)也可以不用設(shè)置,這樣函數(shù)會(huì)從第一行讀取到最后一行,然后再循環(huán)讀取。
4. 注意:該函數(shù)每次讀取文件中的一行,如果線程組中有多個(gè)線程,則每個(gè)線程順序讀取一行,如果有多次循環(huán),則每次循環(huán)順序讀取一行
“_Random”函數(shù)
功能:這個(gè)函數(shù)是從某個(gè)數(shù)字段隨機(jī)讀取數(shù)據(jù)替換參數(shù),可以利用在測(cè)試需要添加多條數(shù)據(jù)記錄而且某些字段需要唯一性的測(cè)試腳本中,隨機(jī)生成的參數(shù)是數(shù)字
作用:可以用來(lái)實(shí)現(xiàn)參數(shù)化http請(qǐng)求發(fā)送的參數(shù),使得在Jmeter運(yùn)行時(shí)參數(shù)化了的參數(shù)在每個(gè)線程去不同的隨機(jī)數(shù)。如果某個(gè)參數(shù)每次發(fā)送請(qǐng)求的時(shí)候不能重復(fù)才可以存儲(chǔ)到數(shù)據(jù)庫(kù)中,則用這個(gè)功能十分方便。
使用:
1. 點(diǎn)擊Jmeter的“選項(xiàng)”,選擇“函數(shù)助手對(duì)話框”(或者使用快捷鍵“Ctrl+F”),在“選擇一個(gè)功能”的下拉框中選擇“_Random”。
2. 配置“_Random”函數(shù),第一個(gè)參數(shù)是“一個(gè)范圍內(nèi)的最小值”,即所要取的隨機(jī)數(shù)的最小值,我們?cè)O(shè)置成1;第二個(gè)參數(shù)是“一個(gè)范圍內(nèi)的最大值”,即所要取的隨機(jī)數(shù)的最大值,我們?cè)O(shè)置成100;第三個(gè)參數(shù)是“函數(shù)名稱”,即用于存儲(chǔ)在測(cè)試計(jì)劃中其他的方式使用的值,我們?cè)O(shè)置成Random。設(shè)置好上面的三個(gè)參數(shù)后,點(diǎn)擊“生成”按鈕,這樣就會(huì)在對(duì)話框的最下面生成一個(gè)字符串“${__Random(1,100,Random)}”,在我們編寫(xiě)的腳本中,找到要替換的參數(shù),把它的值換成前面生成的字符串就可以了,然后每次運(yùn)行的時(shí)候,這個(gè)參數(shù)會(huì)變成一個(gè)1到100之間的隨機(jī)數(shù)。
“_counter”函數(shù)
功能:這個(gè)函數(shù)是一個(gè)計(jì)數(shù)器,用于統(tǒng)計(jì)函數(shù)的使用次數(shù),它從1開(kāi)始,每調(diào)用這個(gè)函數(shù)一次它就會(huì)自動(dòng)加1,它有兩個(gè)參數(shù),第一個(gè)參數(shù)是布爾型的,只能設(shè)置成“TRUE”或者“FALSE”,如果是TRUE,那么每個(gè)用戶有自己的計(jì)數(shù)器,可以用于統(tǒng)計(jì)每個(gè)線程歌執(zhí)行了多少次。如果是FALSE,那就使用全局計(jì)數(shù)器,可以統(tǒng)計(jì)出這次測(cè)試共運(yùn)行了多少次。第二個(gè)參數(shù)是“函數(shù)名稱”
格式:${__counter(FALSE,test)}
使用:我們將“_counter”函數(shù)生成的參數(shù)復(fù)制到某個(gè)參數(shù)下面,如果為T(mén)RUE格式,則每個(gè)線程各自統(tǒng)計(jì),最大數(shù)為循環(huán)數(shù),如果為FALSE,則所有線程一起統(tǒng)計(jì),最大數(shù)為線程數(shù)乘以循環(huán)數(shù)
“_time”函數(shù)
功能:Jmeter運(yùn)行時(shí)取當(dāng)前時(shí)間到變量,利用該功能,可以將某個(gè)參數(shù)增加time函數(shù),然后用該參數(shù)作為查詢條件查詢,然后以該參數(shù)作為斷言,這樣可以使得斷言更精確,因?yàn)闀r(shí)間實(shí)時(shí)變化的,使用該方法,需要注意的是,要先添加一個(gè)全局的用戶參數(shù),具體在斷言操作中有描述。
格式:${__time(MMddmmss,TEST)}
使用:添加jmeter的time函數(shù),選擇選項(xiàng)——函數(shù)助手,然后選擇__time函數(shù),如下圖所示:
在“ormat string for SimpleDateFormat (optional)”中輸入值“MMddhhmmss”,表示取月日時(shí)分秒。
然后,點(diǎn)擊生成,則生成了time參數(shù)。
“_intSum”函數(shù)
功能:用于計(jì)算多個(gè)整數(shù)的和,可以是計(jì)算正整數(shù)和負(fù)整數(shù)的和,它有N個(gè)參數(shù),最少有3個(gè)參數(shù),最多不限。最后一個(gè)參數(shù)是函數(shù)名稱,前面的其它參數(shù)是要求和的整數(shù)。這個(gè)函數(shù)在函數(shù)對(duì)話框中只顯示3個(gè)參數(shù),如果要計(jì)算多個(gè)整數(shù),可以通過(guò)添加參數(shù)實(shí)現(xiàn),不過(guò)最后一個(gè)參數(shù)一定要是函數(shù)名稱。再添加的參數(shù)會(huì)在函數(shù)名稱后面,這個(gè)時(shí)候,需要我們手動(dòng)將函數(shù)名稱參數(shù)放到最后一個(gè)。
格式:${__intSum(1,100,test)}
使用:添加“_intsum”函數(shù)如下圖所示: