如何从数据库中读取值,例如 jmeter 中的 csv 文件
Posted
技术标签:
【中文标题】如何从数据库中读取值,例如 jmeter 中的 csv 文件【英文标题】:How to read values from a database like a csv file in jmeter 【发布时间】:2019-02-05 08:07:28 【问题描述】:我想从选择查询中读取值并在 API 调用中按顺序使用这些值。
由于数据库值被存储为 var_1, var_2 ... var_N
那么我如何增加变量的数字呢?
我使用了一个计数器和预处理器来增加变量中的数字
vars.put("email", "email"+"_"+vars.get("counter"))
但最终变量没有被选择查询中的值替换
例如从调试采样器中选择查询结果
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 post body中的变量
"username":"$email",
"password":"test1234"
实际结果:
发布数据:
"username":"email_1",
"password":"test1234"
预期结果:
"username":"hata.pd.h13u@yopmail.com",
"password":"test1234"
TIA
【问题讨论】:
【参考方案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")。
【讨论】:
【参考方案2】:您是否考虑过使用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
变量值。
参考资料:
JMeter Functions and Variables How to Retrieve Database Data for API Testing with JMeter【讨论】:
以上是关于如何从数据库中读取值,例如 jmeter 中的 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章