将单个查询结果添加到 JMeter 报告中
Adding a single query result into JMeter report
我的 JMeter 计划以单个 JDBC 采样器查询开始,该查询从 Teradata 数据库 (SELECT SESSION;
) 捕获会话 ID。同一计划还有大量 JDBC 采样器,这些采样器具有复杂的查询,会产生大量我不想包含在报告中的输出。
如果我配置摘要报告并勾选 Save Response Data (XML)
,那么来自 all 采样器查询的输出将被保存
如何只将第一个查询结果(它是一个整数)添加到测试摘要报告中而忽略所有其他查询的结果?例如,有没有办法在捕获第一个查询输出后设置 responseData = false
?
虽然不能完全解决您发布的问题,但我会建议一个解决方法,使用 "scope" 监听器(即监听器将只记录与监听器本身相同或更低级别的项目)。具体来说:有 两个 摘要报告:一个在测试级别,另一个(连同您要记录其响应的采样器)在控制器下。例如:
这里我有采样器 1, 2, 3, 4。我只想保存采样器 2 的响应数据。所以
摘要报告 - 不保存响应 处于全局级别,并且配置为不保存任何响应数据。它只保存我想为所有采样器保存的内容。
摘要报告 - 仅保存“2” 配置为以 XML 格式保存响应数据。但是因为这个 Summary Report 的实例和 sampler 2 在同一个控制器下,但是其他的 sampler (1, 3, 4) 在更高的级别, 它只会记录采样器 2.
的响应
所以它不允许您将来自一个采样器的响应数据保存到与所有其他摘要报告数据相同的文件中。但至少您可以过滤要保存的回复。
也许 sample_variables 属性 可以帮忙?
在 JDBC 请求的 "Variable Names" 部分定义一些内容,即将 session
引用名称放在那里:
将下一行添加到 user.properties 文件(位于 Jmeter 的 "bin" 文件夹中)
sample_variables=session_1
或者通过 -J
命令行参数传递它,例如:
jmeter -Jsample_variables=session_1 -n -t /path/to/testplan.jmx -l /path/to/results.csv
您需要使用 session_1
而不是 session
。根据 JDBC 请求采样器文档:
If the Variable Names list is provided, then for each row returned by a Select statement, the variables are set up with the value of the corresponding column (if a variable name is provided), and the count of rows is also set up. For example, if the Select statement returns 2 rows of 3 columns, and the variable list is A,,C, then the following variables will be set up:
A_#=2 (number of rows)
A_1=column 1, row 1
A_2=column 1, row 2
C_#=2 (number of rows)
C_1=column 3, row 1
C_2=column 3, row 2
因此给定您的查询 returns 只有 1 行包含 1 个整数 - 它将存在于 session_1
JMeter 变量中。有关在 JMeter 中处理数据库查询结果的综合信息,请参阅 Debugging JDBC Sampler Results in JMeter 文章。
测试完成后,您会在 .jtl 结果文件中看到一个额外的列,其中包含您的 "session" 值:
也许你可以尝试断言 ${__threadNum}
即将断言的条件设置为“${__threadNum}=1”并将监听器的 "Log/display only" 选项设置为 "successes"
这样它应该只记录采样器的第一个响应。
我的 JMeter 计划以单个 JDBC 采样器查询开始,该查询从 Teradata 数据库 (SELECT SESSION;
) 捕获会话 ID。同一计划还有大量 JDBC 采样器,这些采样器具有复杂的查询,会产生大量我不想包含在报告中的输出。
如果我配置摘要报告并勾选 Save Response Data (XML)
,那么来自 all 采样器查询的输出将被保存
如何只将第一个查询结果(它是一个整数)添加到测试摘要报告中而忽略所有其他查询的结果?例如,有没有办法在捕获第一个查询输出后设置 responseData = false
?
虽然不能完全解决您发布的问题,但我会建议一个解决方法,使用 "scope" 监听器(即监听器将只记录与监听器本身相同或更低级别的项目)。具体来说:有 两个 摘要报告:一个在测试级别,另一个(连同您要记录其响应的采样器)在控制器下。例如:
这里我有采样器 1, 2, 3, 4。我只想保存采样器 2 的响应数据。所以
摘要报告 - 不保存响应 处于全局级别,并且配置为不保存任何响应数据。它只保存我想为所有采样器保存的内容。
摘要报告 - 仅保存“2” 配置为以 XML 格式保存响应数据。但是因为这个 Summary Report 的实例和 sampler 2 在同一个控制器下,但是其他的 sampler (1, 3, 4) 在更高的级别, 它只会记录采样器 2.
的响应
所以它不允许您将来自一个采样器的响应数据保存到与所有其他摘要报告数据相同的文件中。但至少您可以过滤要保存的回复。
也许 sample_variables 属性 可以帮忙?
在 JDBC 请求的 "Variable Names" 部分定义一些内容,即将
session
引用名称放在那里:将下一行添加到 user.properties 文件(位于 Jmeter 的 "bin" 文件夹中)
sample_variables=session_1
或者通过
-J
命令行参数传递它,例如:jmeter -Jsample_variables=session_1 -n -t /path/to/testplan.jmx -l /path/to/results.csv
您需要使用
session_1
而不是session
。根据 JDBC 请求采样器文档:If the Variable Names list is provided, then for each row returned by a Select statement, the variables are set up with the value of the corresponding column (if a variable name is provided), and the count of rows is also set up. For example, if the Select statement returns 2 rows of 3 columns, and the variable list is A,,C, then the following variables will be set up:
A_#=2 (number of rows)
A_1=column 1, row 1
A_2=column 1, row 2
C_#=2 (number of rows)
C_1=column 3, row 1
C_2=column 3, row 2
因此给定您的查询 returns 只有 1 行包含 1 个整数 - 它将存在于
session_1
JMeter 变量中。有关在 JMeter 中处理数据库查询结果的综合信息,请参阅 Debugging JDBC Sampler Results in JMeter 文章。测试完成后,您会在 .jtl 结果文件中看到一个额外的列,其中包含您的 "session" 值:
也许你可以尝试断言 ${__threadNum}
即将断言的条件设置为“${__threadNum}=1”并将监听器的 "Log/display only" 选项设置为 "successes"
这样它应该只记录采样器的第一个响应。