我试图从CSV数据配置中获取变量,并将它们添加到像这样的分布式测试环境中的后端侦听器。仅供参考,它可以在我的本地机器上运行。
下面是我的测试计划:
测试计划
CSV Data Config:
CSV配置
我的csv是这样的:
SELECT count(*) FROM github_events;simpleQuery
SELECT count(*) FROM github_events;medium
SELECT count(*) FROM github_events;complexQuery
SELECT count(*) FROM github_events;simpleQuery
后端侦听器:
后台监听器我在beanshell预处理器中设置CSV配置变量,像这样:
props.put("query", "${QUERY}");
props.put("query_type", "${QUERY_TYPE}");
,这就是为什么我在后端侦听器中有${__P(query)}
${__P(query_type)}
。
目标是从CSV数据配置中获取QUERY
和QUERY_TYPE
,并将其发送到后端侦听器。
任何帮助都会很感激。如果我需要在这里添加更多信息,请告诉我。谢谢你!
<解决方案/strong>:
我是如何得到这个工作的…有点粗糙,但它可以满足我的需要:
我在JDBC请求上创建了一个JSR223后处理器,并添加了以下代码:
import groovy.json.*
def my_query = vars.get("QUERY")
def my_query_type = vars.get("QUERY_TYPE")
json = JsonOutput.toJson([myQuery: my_query, myQueryType: my_query_type])
prev.setSamplerData(groovy.json.JsonOutput.prettyPrint(groovy.json.JsonOutput.toJson(json)))
这将不起作用,如果你需要什么是在你的响应数据,但在我的情况下,它是可以替换。顺便说一句,这只适用于我的分布式测试。要使其在本地工作,您可以使用prev.setResponseData
。希望对大家有所帮助。
我不认为你可以,因为根据JMeter 5.4.1,后端侦听器的所有字段都被填充在"testStarted"阶段
同样适用于自定义侦听器
这意味着在初始化后端侦听器时,源自CSV数据集配置的JMeter变量不存在,并且您对JMeter属性的引用返回默认值1
,因为没有这样的变量。
如果你正在寻找动态发送指标到Azure的可能性,你需要使用Groovy语言在JSR223 Listener中复制Azure后端监听器的代码。
这在本地机器上工作的唯一方法是:
- 你第一次在GUI模式下运行你的测试计划——它失败了,但是它设置了属性
- 你在GUI模式下第二次运行你的测试计划-它通过了,但使用属性的最后值
- 等。