将单个查询结果添加到 JMeter 报告中
Posted
技术标签:
【中文标题】将单个查询结果添加到 JMeter 报告中【英文标题】:Adding a single query result into JMeter report 【发布时间】:2016-07-21 19:19:42 【问题描述】:我有一个从 Teradata 数据库 (SELECT SESSION;
) 捕获会话 ID 的单个 JDBC 采样器查询开始的 JMeter 计划。同样的计划也有大量的 JDBC 采样器,它们带有复杂的查询,会产生我不想包含在报告中的大量输出。
如果我配置摘要报告并勾选Save Response Data (XML)
,则所有采样器查询的输出将被保存
如何仅将第一个查询结果(它是一个整数)添加到测试摘要报告中,而忽略所有其他查询的结果?例如有没有办法在捕获第一个查询输出后设置responseData = false
?
【问题讨论】:
【参考方案1】:也许sample_variables 属性可以提供帮助?
在 JDBC 请求的“变量名称”部分定义一些内容,即将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 Request Sampler 文档:
如果提供了变量名称列表,那么对于 Select 语句返回的每一行,变量都设置为对应列的值(如果提供了变量名称),并且还设置了行数向上。例如,如果 Select 语句返回 2 行 3 列,变量列表为 A,,C,那么会设置以下变量:
A_#=2(行数)
A_1=第 1 列第 1 行
A_2=第 1 列,第 2 行
C_#=2(行数)
C_1=第 3 列,第 1 行
C_2=第 3 列,第 2 行
因此,鉴于您的查询仅返回包含 1 个整数的 1 行 - 它将存在于 session_1
JMeter 变量中。有关在 JMeter 中处理数据库查询结果的全面信息,请参阅 Debugging JDBC Sampler Results in JMeter 文章。
测试完成后,您会在 .jtl 结果文件中看到一个额外的列,其中包含您的“会话”值:
【讨论】:
太棒了!这很有效。享受你的赏金吧! 我这里也有一个相关的问题,Dmitri 你有机会看看吗? ***.com/questions/38536508/…【参考方案2】:虽然不能完全解决您发布的问题,但我会建议一种解决方法,使用监听器的“范围”(即监听器只会记录与监听器本身相同或更低级别的项目)。具体来说:有两个摘要报告:一个在测试级别,另一个(连同您要记录其响应的采样器)在控制器下。例如:
我这里有采样器1、2、3、4。我只想保存采样器 2 的响应数据。所以
摘要报告 - 不保存响应 处于全局级别,并且配置为不保存任何响应数据。它只保存我想为所有采样器保存的内容。
摘要报告 - 仅保存“2” 配置为以 XML 格式保存响应数据。但是因为这个Summary Report的实例和sampler 2在同一个控制器下,但是其他的sampler (1, 3, 4)在更高的级别,它只会记录响应采样器 2.
因此,它并不完全允许您将来自一个采样器的响应数据保存到与所有其他汇总报告数据相同的文件中。但至少您可以过滤要保存的回复。
【讨论】:
这是个好主意,我什至不需要控制器,我可以简单地将摘要报告附加到执行会话查询的 JDBC 采样器。然而,奖品是 Dmitri 的回答【参考方案3】:也许你可以试试 $__threadNum 的断言
即将断言条件设置为“$__threadNum=1”,并将您的侦听器的“仅记录/显示”选项设置为“成功”
这样它应该只记录采样器的第一个响应。
【讨论】:
以上是关于将单个查询结果添加到 JMeter 报告中的主要内容,如果未能解决你的问题,请参考以下文章