2011-09-06 77 views
14

我使用的是CSV數據集config元素,它是從文件中讀取這樣的:JMeter CSV數據集配置:如何移動同一線程中的變量?

abd 
sds 
ase 
sdd 
ssd 
cvv 

其中,基本上,擁有一批3個字母的隨機字符串的。

我將它們分配給一個名爲${random_3}的變量。

現在,我想在同一個線程中多次使用此列表中的值,但是每次我都想移到下一個。例如,我希望第一個採樣器使用abd,第二個使用sds,然後使用ase等。但是,如果我只使用${random_3},那麼只有第一個採樣器(abd)用於任何涉及到的地方。有沒有一種方法可以指定循環來自線程中CSV數據集的值?

回答

32

CSV數據集配置這個工作正常。所有的值都需要在文件的一列中,並按照描述將它們分配給變量。

創建一個線程組對於多個用戶而言,您希望迭代該文件(即對HTTP請求進行操作)具有儘可能多的線程。假設1個用戶,設置線程數爲1,循環計數爲1

線程組內,您將需要添加一個迴路控制器當控制器。你表示你想要遍歷整個數據集。如果你添加一個循環控制器,你需要將循環計數設置爲6,因爲你有6個值,每個值一個。或者(更容易處理整個文件)添加一個While Controller而不是Loop Controller,並將$ {random_3}設置爲while條件。

設置CSV數據集回收的EOF和EOF 停止線程值正確是很重要的。如果您計劃多次迭代文件,則必須將「EOF上的回收」設置爲True(即指示jMeter返回到CSV文件的頂部)。如果您使用的是循環控制器,則將「停止線程在EOF上」設置爲False如果您正在使用while控制器並希望在讀取整個csv數據集後停止,則使用true

將CSV數據集配置添加爲控制器的子項以及HTTP請求。使用您想要使用的任何偵聽器查看結果。

2

僅當每個線程迭代開始時,CSV數據集纔會在文件中移動。

你可以使用Raw Data Source預處理器來移動每個請求的文件,這就是你的解決方案。

+0

謝謝我看了一下,但它似乎並沒有直接關係到我的用例,並且總體上有點煩躁。 –

+0

其實它是解決方案。你可以在項目的郵件列表中詢問你應該如何使用它來得到你想要的。 –

+0

謝謝Andrey,我會再檢查一次。我對這部分的要求很簡單,並且在beanshell中由一個簡單的隨機字符串生成器解決。 –

1

請注意,您需要具有給定變量名稱的值在同一列中。

否則:abd sds ase sdd ssd cvv是從

abd 
sds 
ase 
sdd 
ssd 
cvv 

第一有6個變量與每一個值非常不同;第二個變量有6個值。

+0

是的,謝謝我意識到這一點,我希望他們被分配到相同的變量(但每次引用時都會有一個新值) –

1

更新:

CSV數據集似乎並不適合於此目的。

我最終創建了一些簡單的beanshell腳本,根據需要創建隨機1,2或3個字母的單詞,另一個從大集合中讀取隨機單詞。這樣,每次他們被稱爲他們給一個隨機值。他們被稱爲是這樣的:

${__BeanShell(getRandomStr(3))} 

${__BeanShell(getRandomWord()) 
相關問題