mysql - variable - jmeter官方




如何在HTTP请求中使用来自Jmeter JDBC请求的响应 (2)

这是我的情况:

我想做这个:

我有一个MySQL数据库中的URL列表,我想要使用HTTP请求来查看响应是否是404的HTTP状态代码。

我已经这样做了:

  1. 添加并配置了一个JDBC配置元素。
  2. 添加并配置了一个JDBC请求采样器。 基本上是一个select语句,返回一个8列的表。 我为“变量名称”字段提供了8个逗号分隔的变量,以便可以用这些变量名称来标识JDBC请求的结果。
  3. 创建一个HTTP请求采样器,使用“服务器名称或IP”字段中的变量$ {url}之一。

虽然JDBC请求完美地工作,并返回一堆行的表,问题是HTTP请求采样器从不从JDBC请求结果拿起变量。 HTTP请求在“查看结果树”中看起来像这样:

GET http://${url}/

我试过这些解决方案:

  1. 将“将响应保存到文件”侦听器添加到JDBC请求。 这会创建一个“.plain”类型的文件,而不是CSV。 如果是CSV,我可以通过创建CSV数据集配置来使用该CSV文件。 所以这个尝试失败了。
  2. 我试图在上面的尝试强制文件名总是使用'​​C:\ JMETERTest \ data.csv'。 但是它最终会创建一个名为“C:\ JMETERTest \ data.csv1.plain”的新文件。 这个尝试也失败了。
  3. 我尝试在HTTP请求的服务器名称字段中将URL列引用为$ {url_1}。 有效。 但现在的问题是,在结果树中,所有的请求都是从结果集的第一行开始的。 我看到这是因为上面$ {url_1}中指定的行号“_1”。 我可以使用这个,如果有人可以建议一个方法来参数化'_1'到我可以循环的变量(可能使用“Counter”元素)。 我通过引用名称'loopCounter'创建了一个Counter Config元素。 并在HTTP请求的服务器名称字段中使用它:

    $ {网址_( “$ {}循环计数器”)}

但是现在,我的HTTP请求看起来更加清晰:

GET http://${url_("${loopCounter}")}/

这也不起作用。

解决方案3看起来更可行,只有当我可以解决行号的参数化。 我也打开JMeter插件的建议。 当我们继续时,我会更新任何其他的东西。

PS请让我知道,如果我的问题是不明确的反正。


您是否尝试过将HTTP采样器包装在ForEach控制器(父级)中,其中控制器的变量是从JDBC采样器获得的URL变量?

此外,ForEach中的输出变量将成为您现在在HTTP采样器中使用的变量。

这样它将从索引的开始到结束遍历每个变量,每次运行一次采样器。


在“保存对文件的响应”监听器中,选择复选框“不要添加后缀和前缀”。 检查这两个选项将确保您获得确切的日志文件名称。