如何从数据库中读取值,例如 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_1email_2 等,而不是实际的 $email_1 变量值。

参考资料:

JMeter Functions and Variables How to Retrieve Database Data for API Testing with JMeter

【讨论】:

以上是关于如何从数据库中读取值,例如 jmeter 中的 csv 文件的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter从文件中读取参数值

jmeter从表格批量读取数据

如何在 JMETER 中将环境属性 json 文件读取到 UDV

从缺少列的文件中读取数据。 C++

jmeter如何采用json提取器提取多个值

jmeter能不能随机读取csv文件中的参数?