在后端侦听器中访问 CSV 数据集配置变量

Access CSV Data Set Config variables in backend listener

我正在尝试从 CSV 数据配置中获取我的变量并将它们添加到我的 backend listener in a distributed testing environment like this。仅供参考,它适用于我的本地机器。

这是我的测试计划:

Test Plan

CSV 数据配置:

CSV config

我的 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

后端侦听器:

Backend Listener

我在 beanshell 预处理器中设置 CSV 配置变量,如下所示:

props.put("query", "${QUERY}");
props.put("query_type", "${QUERY_TYPE}");

这就是为什么我在后端侦听器中有 ${__P(query)} ${__P(query_type)}

目标是从 CSV 数据配置中获取 QUERYQUERY_TYPE 并将其发送到后端侦听器。

如有任何帮助,我们将不胜感激。如果我需要在此处添加更多信息,请告诉我。谢谢!

解决方法:

我是如何让它工作的……有点老套,但它可以满足我的需要:

我根据 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" phase

这同样适用于您的 custom listener

这意味着 JMeter Variables 在初始化后端侦听器时不存在源自 CSV 数据集配置的 JMeter Variables 并且您对 JMeter 属性 returns 的默认值 1 因为没有这样的变量。

如果您正在寻找将指标动态发送到 Azure 的可能性,您将需要使用 JSR223 Listener using Groovy 语言从 Azure 后端侦听器复制代码。


这在您的本地计算机上运行的唯一方法是:

  1. 你 运行 你第一次在 GUI 模式下测试计划 - 它失败了,但它设置了属性
  2. 你 运行 你第二次在 GUI 模式下测试计划 - 它通过了但使用了属性的最后一个值
  3. 等等