[英]Jmeter : Perform calculation in CSV rows and use calculated values in test
我一直在嘗試創建 Jmeter 測試以使用 CSV 執行更真實的計時。 我有一個 CSV 文件,其中包含一行時間。 我想在不同的線程上以重復的方式基於 2 個連續時間之間的差異運行測試。 我的 CSV 如下所示。 我想計算 Time = Time2-Time1、Time= Time3-Time2 等時間。將所有這些時間保存在另一個 excel 中。
我試圖運行 BeanShell 腳本並遵循了幾篇文章,但沒有成功。
例如: ${Test}=${__BeanShell(${__CSVRead(Test.csv,1)}${__CSVRead(Test.csv,next)}-${__CSVRead(Test.csv,1)})}
這適用於單個值,但不確定如何為 CSV 的所有值自動執行此操作以及如何將其保存在特定行中。 任何幫助將是非常非常可觀的。
從 JMeter 3.1 開始,您應該使用 JSR223 測試元素和 Groovy 語言編寫腳本,因此請考慮將代碼更改為以下內容:
def lines = new File('old.csv').readLines()
lines.eachWithIndex { line, index ->
new File('new.csv') << line
if (index < lines.size() - 1) {
def currentTime = line.split(',')[1] as long
def nextTime = lines.get(index + 1).split(',')[1] as long
def delta = nextTime - currentTime
new File('new.csv') << ',' << delta << System.getProperty('line.separator')
}
}
new File('new.csv') << ',' << '0'
腳本的好地方是setUp Thread Group 中某處的JSR223 Sampler ,如果您不希望采樣器出現在測試結果中,請在腳本的開頭添加SampleResult.setIgnore()
我所做的是這樣的:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.