今天大家一起來學(xué)習(xí)一下參數(shù)化的一個重要工具,我們在寫腳本時,經(jīng)常要用到參數(shù)化,而實(shí)現(xiàn)參數(shù)化最常用的方法之一就是使用CSV Data Set Config元件,使用方便,功能強(qiáng)大。
網(wǎng)站設(shè)計、網(wǎng)站建設(shè),成都做網(wǎng)站公司-成都創(chuàng)新互聯(lián)已向1000+企業(yè)提供了,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)絡(luò)營銷等服務(wù)!設(shè)計與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗,合理的價格為您打造企業(yè)品質(zhì)網(wǎng)站。
簡單的使用方法估計大家都會,或者說很容易就會了,但是,如果說是比較復(fù)雜的配置,估計就有很多人會被繞暈了(我剛開始也經(jīng)常暈~),今天咱們就詳細(xì)看看,怎么才能不暈!哈哈
首先來看一眼長啥樣,相信大家都比較熟悉
該元件的作用:
從文件中讀取變量值,用于變量的參數(shù)化,可設(shè)置多種讀取方式。
各填寫項說明:
1、名稱、注釋:元件的名稱及注釋,可自定義
2、Config the CSV Data Source:配置數(shù)據(jù)源
1)Filename:csv文件的名稱
注意:這里要包括文件的路徑,在4.0版本中可以點(diǎn)擊右側(cè)的瀏覽按鈕選擇文件,會自動帶上文件的絕對路徑;
另外,當(dāng)csv文件在jmeter的bin目錄或腳本目錄時,只需給出文件名即可;
使用相對路徑時,jmeter默認(rèn)先去bin目錄下查找,然后去腳本目錄下查找;
2)File encoding:csv文件編碼
默認(rèn)使用當(dāng)前操作系統(tǒng)的編碼格式;
如果文件中包含中文亂碼時,可嘗試utf-8、gbk等;
3)Variable Names(comma-delimited):
csv文件中各列的名字(有多列時,用英文逗號隔開列名);
名字順序要與內(nèi)容對應(yīng),這個變量名稱是在其他處被引用的,所以為必填項。
4)Delimiter(use “t” for tab):csv文件中的分隔符(用”t”代替tab鍵)
一般情況下,分隔符為英文逗號,保持默認(rèn)就行
5)Allow quoted data?:是否允許數(shù)據(jù)內(nèi)容加引號
6)Recycle on EOF?:
到了文件尾是否循環(huán),True—繼續(xù)從文件第一行開始讀取,F(xiàn)alse—不再循環(huán);
此項與下一項的設(shè)置為互斥關(guān)系,即true-false,或false-true;
7)Stop thread on EOF?:
到了文件尾是否停止線程,True—停止,F(xiàn)alse—不停止;
注意:當(dāng)Recycle on EOF設(shè)置為True時,此項設(shè)置無效。
8)Sharing mode:共享模式
All threads –所有線程,此元件作用范圍內(nèi)的所有線程共享csv數(shù)據(jù),每個線程依次讀取csv數(shù)據(jù),互不重復(fù);
Current thread group—當(dāng)前線程組,在此元件作用范圍內(nèi),以線程組為單位,每個線程組內(nèi)的線程共享csv數(shù)據(jù),依次讀取數(shù)據(jù),互不重復(fù);
Current thread—當(dāng)前線程,在此元件作用范圍內(nèi),每次循環(huán)中所有線程取值一樣;
下面重點(diǎn)分析一下Allow quoted data和Sharing mode:
1、Allow quoted data?:是否允許帶雙引號的數(shù)據(jù)
此項實(shí)際是控制csv文件中的雙引號是否為有效字符;
如果數(shù)據(jù)帶有雙引號且此項設(shè)置TRUE,則會自動去掉數(shù)據(jù)中的引號使能夠正常讀取數(shù)據(jù),且即使引號之間的內(nèi)容包含有分隔符時,仍作為一個整體而不進(jìn)行分隔;
如果數(shù)據(jù)帶有引號且此項設(shè)置為FALSE,則讀取數(shù)據(jù)報錯;
如果希望雙引號字段中間再包含雙引號,則需要加兩個雙引號來代表單個雙引號。(啊啊啊,太拗口了?。。。?br/>如下圖所示,此項設(shè)置為true時,"2,3"-->2,3;"4""5"-->4"5
2、Sharing mode:共享模式
(1)All threads:針對所有線程組的所有線程,每個線程取值不一樣,依次取csv文件中的下一行。
假如說有線程1到線程n (n>1),線程1取了一次值后,線程2取值時,取到的是csv文件中的下一行,即與線程1取的不是同一行。不管是單個線程組還是多個線程組,每個線程都是依次取下一行。需要注意的是,當(dāng)一個線程組中有多個請求時,對于每個線程來說,在一次循環(huán)中每個請求的取值是一樣的。
下面舉例說明:
A、設(shè)置線程組1、2、3分別為1并發(fā)、1次循環(huán),且各線程組按順序執(zhí)行:
B、設(shè)置線程組1、2、3分別為1并發(fā)、2次循環(huán),且各線程組按順序執(zhí)行:
C、設(shè)置線程組1、2、3分別為2并發(fā)、1次循環(huán),且各線程組按順序執(zhí)行:
大家可以仔細(xì)比較一下上圖和上上圖的區(qū)別,乍一看貌似是一樣的,但是實(shí)際卻是不同的線程,怎么區(qū)分不同線程呢?
可以使用一個函數(shù)來判斷:
${__BeanShell(ctx.getThread().getThreadName().toString())}
這個函數(shù)可以輸出類似這樣的內(nèi)容:“線程組1 1-2“,前面是當(dāng)前線程組的名稱-線程組1,后面是線程組id,然后是線程id,現(xiàn)在再比較上面兩圖中,發(fā)現(xiàn)是線程id不一樣。
總體來說就是,在All Threads模式下,并發(fā)數(shù)和循環(huán)數(shù)都會讀取不同的csv數(shù)據(jù),但是同一線程組內(nèi)的多個sampler總是取相同的值。
(2)Current thread group:當(dāng)前線程組,
取值情況是:以線程組為單位,每個線程組內(nèi)的線程都會從第1行開始取值并依次往下進(jìn)行取值。
舉例如下:
A、設(shè)置線程組1、2均為2并發(fā)、1循環(huán):
(3)Current thread:當(dāng)前線程。
取值情況是:每個線程都會從第1行開始取值并依次往下進(jìn)行取值,在同一次循環(huán)中所有的線程取值一樣。
舉例如下:
A、設(shè)置線程組1、2均為2并發(fā)、1循環(huán):
上面兩個圖看起來好像是一樣的呀?再仔細(xì)看一下,后面的test參數(shù)取值是不同的。
為什么不同呢?本來想認(rèn)真的解釋一番,但是組織了很久的語言,還是感覺沒說清楚。
這一塊的邏輯是“只可意會,不可言傳”,必須要靠自己親自實(shí)驗,慢慢體會才行。
最后,給大家一個小作業(yè):
如何通過設(shè)置Sharing moder的方法來實(shí)現(xiàn)多個sampler中的參數(shù)可以依次不重復(fù)的取同一個csv文件中的值?
jmeter視頻:https://edu.51cto.com/course/14305.html
分享文章:jmeter學(xué)習(xí)指南之參數(shù)化CSVDataSetConfig-創(chuàng)新互聯(lián)
URL地址:http://redsoil1982.com.cn/article2/issic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站收錄、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站設(shè)計、網(wǎng)站設(shè)計公司、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容