我想从选择查询中读取值,并在API调用中依次使用这些值。
由于数据库值存储为var_1,所以var_2 ... var_N
那么我如何增加变量的数量?
我使用了计数器和预处理器来增加变量中的数字
vars.put(“电子邮件”,“电子邮件” +“ _” + vars.get(“计数器”))
但是最终变量不会被选择查询中的值代替
例如从调试采样器中选择查询结果
email_1=hata.pd.h13u@yopmail.com
email_2=hata.pd.h13u@yopmail.com
email_3=hataiot.test13@mailinator.com
email_4=hataiot.test12@mailinator.com
-结合变量和计数器:
vars.put ("email", "email"+"_"+vars.get("counter"))
-使用API帖子正文中的变量
{
"username":"${email}",
"password":"test1234"
}
实际结果:
POST数据:
{
"username":"email_1",
"password":"test1234"
}
预期结果:
{
"username":"hata.pd.h13u@yopmail.com",
"password":"test1234"
}
TIA
答案 0 :(得分:1)
${__V(email_${counter})}
尝试此操作,另请参见文档:http://jmeter.apache.org/usermanual/functions.html#what_can_do
请注意,变量当前无法嵌套;即$ {Var $ {N}}不起作用。 __V(变量)函数可用于执行此操作:$ {__ V(Var $ {N})}。您还可以使用$ {__ BeanShell(vars.get(“ Var $ {N}”)}}。
答案 1 :(得分:1)
您是否考虑过使用ForEach Controller?迭代提取器或JDBC测试元素中的变量非常方便。
如果您仍想继续使用当前方法,则需要更改此行:
vars.put ("email", "email"+"_"+vars.get("counter"))
对此:
vars.put ("email", vars.get("email"+"_"+vars.get("counter")))
因为您要放入email
等变量,例如email_1
,email_2
等,而不是实际的${email_1}
变量值。
参考文献: