如何在HTTP请求中使用JMeter JDBC请求的响应
-
21-12-2019 - |
题
这是我的情况:
我想这样做:
我在mysql数据库中有一个URL列表,我想使用HTTP请求点击,看看响应是否是404的HTTP状态代码。
我已经完成了这个:
- 添加并配置了JDBC配置元素。
- 添加并配置了JDBC请求采样器。基本上是一个选择语句,返回具有8列的表。我为“变量名称”字段提供了8个逗号分隔的变量,以便可以使用这些变量名称标识JDBC请求的结果。
- 创建了一个HTTP请求采样器,它在“服务器名称或IP”字段中使用其中一个变量$ {url}。
- 将“将响应添加到文件”侦听器到JDBC请求。这会创建“.plain”类型的文件而不是CSV。是否已成为CSV,我可以通过创建CSV数据集配置来利用该CSV文件。所以这种尝试失败了。
- 我试过在上面的尝试中强制文件名始终使用'c:\ jmetertest \ data.csv'。但它最终创建了一个名为'c:\ jmetertest \ data.csv1.plain'的新文件。这种尝试也失败了。
-
我试图在http请求的服务器名称字段中为$ {url_1}引用URL列。有效。但现在问题在于,在结果树中,所有请求都是从结果集的第一行中获取URL。我看到这是因为上面的$ {url_1}中指定的行号'_1'。如果有人可以建议将“_1”参数化为我可以循环的变量(可能使用'计数器'元素),则可以使用此方法。我通过引用名称'loopcounter'创建了一个计数器配置元素。并在HTTP请求的服务器名称字段中使用它:
$ {url _(“$ {loopcounter}”)}
虽然JDBC请求完美无瑕地工作并用一堆行返回一个表,但问题是HTTP请求采样器从未从JDBC请求结果中拾取变量。 HTTP请求在“View结果树”中如此如此如此如此如此如此在“视图结果树”中如下所示:
GET http://${url}/
.
我已经尝试过这些解决方案:
但现在我的http请求看lame:
GET http://${url_("${loopCounter}")}/
.
这也没有工作。
解决方案3只有在我可以解析行号的参数化时,才会看起来更具可行模式。 我也向JMeter插件建议开放。 我会更新我尝试的任何其他东西。
P.S。请告诉我我的问题是否在不管怎样。
解决方案
您是否尝试在Foreach Controller(父)中包装HTTP采样器,其中控制器的变量是从JDBC采样器获得的URL变量?
此外,Foreach中的输出变量将是您现在在HTTP采样器中使用的变量。
这种方式将从索引的开头迭代每个变量到结束,每次运行一次采样器。
其他提示
在'保存到文件侦听器的响应中,选择复选框“不添加后缀和前缀”。检查这两个选项将确保,您得到精确的日志文件名。