JMeter While控制器出现CSV问题
我在使用CSV阅读器时遇到了Jmeter中的循环控制器的问题,希望有人能为我解释一下 因此,我有一个CSV文件,其中包含一组货币代码及其各自的名称,请参见下文,然后我在后续HTTP请求中使用CSV值JMeter While控制器出现CSV问题,csv,while-loop,jmeter,Csv,While Loop,Jmeter,我在使用CSV阅读器时遇到了Jmeter中的循环控制器的问题,希望有人能为我解释一下 因此,我有一个CSV文件,其中包含一组货币代码及其各自的名称,请参见下文,然后我在后续HTTP请求中使用CSV值 ALL,Albanian Lek DZD,Algerian Dinar ARS,Argentine Peso AMD,Armenian Dram AUD,Australian Do
ALL,Albanian Lek
DZD,Algerian Dinar
ARS,Argentine Peso
AMD,Armenian Dram
AUD,Australian Dollar
AZN,Azerbaijan New Manat
BSD,Bahamian Dollar
BHD,Bahraini Dinar
BDT,Bangladeshi Taka
BZD,Belize Dollar
BOB,Bolivian Boliviano
BRL,Brazilian Real
GBP,British Pound
BND,Brunei Dollar
XOF,CFA Franc BCEAO
XAF,CFA Franc BEAC
XPF,CFP Franc
KHR,Cambodian Riel
CAD,Canadian Dollar
CLP,Chilean Peso
CNY,Chinese Yuan Renminbi
COP,Colombian Peso
KMF,Comoros Franc
CRC,Costa Rican Colon
HRK,Croatian Kuna
CZK,Czech Koruna
DKK,Danish Krone
DJF,Djibouti Franc
DOP,Dominican R. Peso
XCD,East Caribbean Dollar
EGP,Egyptian Pound
EEK,Estonian Kroon
EUR,Euro
FJD,Fiji Dollar
HNL,Honduran Lempira
HKD,Hong Kong Dollar
HUF,Hungarian Forint
ISK,Iceland Krona
INR,Indian Rupee
IDR,Indonesian Rupiah
ILS,Israeli New Shekel
JPY,Japanese Yen
JOD,Jordanian Dinar
KZT,Kazakhstan Tenge
KES,Kenyan Shilling
KWD,Kuwaiti Dinar
KGS,Kyrgyzstanian Som
LAK,Lao Kip
LVL,Latvian Lats
LBP,Lebanese Pound
LTL,Lithuanian Litas
MYR,Malaysian Ringgit
MRO,Mauritanian Ouguiya
MUR,Mauritius Rupee
MXN,Mexican Peso
MNT,Mongolian Tugrik
MAD,Moroccan Dirham
NAD,Namibia Dollar
NPR,Nepalese Rupee
NZD,New Zealand Dollar
NIO,Nicaraguan Cordoba Oro
NOK,Norwegian Kroner
OMR,Omani Rial
PKR,Pakistan Rupee
PGK,Papua New Guinea Kina
PYG,Paraguay Guarani
PEN,Peruvian Nuevo Sol
PHP,Philippine Peso
PLN,Polish Zloty
QAR,Qatari Rial
RON,Romanian New Lei
RUB,Russian Rouble
RWF,Rwandan Franc
WST,Samoan Tala
SAR,Saudi Riyal
SGD,Singapore Dollar
SOS,Somali Shilling
ZAR,South African Rand
KRW,South-Korean Won
LKR,Sri Lanka Rupee
SZL,Swaziland Lilangeni
SEK,Swedish Krona
CHF,Swiss Franc
TWD,Taiwan Dollar
TZS,Tanzanian Shilling
THB,Thai Baht
TND,Tunisian Dinar
TRY,Turkish Lira
USD,US Dollar
UGX,Uganda Shilling
UAH,Ukraine Hryvnia
UYU,Uruguayan Peso
AED,Utd. Arab Emir. Dirham
VUV,Vanuatu Vatu
VEF,Venezuelan Bolivar
VND,Vietnamese Dong
ZMK,Zambian Kwacha
在While循环中,我有一个条件检查:
${uuu javaScriptEOF!=${currencyCode}
注意:stackoverflow似乎没有显示尖括号,但我的JMeter中有
所以我看到的是,循环正在通过CSV,并且正在发送所需的HTTP请求。但是,在这种情况下,一旦达到CSV值ZMK中的最后一个值,将发出一个值为的额外请求
所以看起来Whileis比它应该做的多做了一个循环
我已经检查了VIM中的CSV文件和我能想到的所有其他编辑器,CSV文件的末尾没有空行或选项卡
如果我做循环条件
${{uu javaScriptZMK!=${currencyCode}
一切正常。但是CSV可能会增长,所以我不想硬编码任何东西
为了让你们更好地了解我的考试,这里是整体情况
+ Thread Group
++ Simple Controller
+++ While Loop with condition ${__javaScript("<EOF>" != "${currencyCode}")}
++++ CSV Reader (Recycle on EOF = FALSE, STOP THREAD ON EOF = FALSE, SHARING = Current Thread)
++++ HTTP Request using value from CSV file
另外,我的尝试将您的CSV阅读器一直放在测试计划的顶部。它现在位于导致此问题的While控制器下方。尝试完全删除While控制器,并在线程组中提供合理数量的循环,或者用替换它 此外,您应该将CSV数据集配置为HTTP请求的子级。有关如何在JMeter中实现CSV读取逻辑的更多详细信息,请参阅《使用指南》 另一个选项是使用来检索所有货币代码和本地名称,并将它们存储到JMeter变量中 下面的Beanshell代码将获取Java中可用的所有货币,并将它们存储到JMeter变量中
Set<Currency> currencies = Currency.getAvailableCurrencies();
for (Currency currency : currencies) {
vars.put(currency.getCurrencyCode(), currency.getDisplayName());
}
${uuuu javaScript${currencyCode}!=EOF,}
与我一起工作。将您的CSV阅读器放在测试计划的顶部,作为while控制器的子控制器,使用以下条件函数或变量:${uu javaScript“${currencyCode}”!=”,}。
然后,您必须将线程组的线程数增加到CSV文件中的行数,这样它将使用每个线程在CSV文件中的每一行上循环。感谢您的建议,但这似乎只是在CSV文件的第一行上不断循环,而此代码可能会回答这个问题,提供关于如何和/或为什么解决问题的附加上下文将提高答案的长期价值。