拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 使用JMeter将提取的数据写入文件

使用JMeter将提取的数据写入文件

白鹭 - 2021-11-24 482 0 0

1.概述

在本教程中,让我们探索两种从Apache JMeter提取数据并将其写入外部文件的方法。

2.设置基本的JMeter脚本

现在让我们开始创建一个基本的JMeter脚本。让我们Thread Group (这是创建Thread Group时的默认设置):

使用JMeter将提取的数据写入文件

现在,在该Thread Group ,创建一个HTTP Sampler

JMeter创建Http采样器

让我们设置HTTP Sampler来调用在localhost.我们可以通过使用简单的REST控制器定义API开始:

@RestController

 public class RetrieveUuidController {



 @GetMapping("/api/uuid")

 public Response uuid() {

 return new Response(format("Test message... %s.", UUID.randomUUID()));

 }

 }

另外,我们还定义Response实例,如上所引用:

public class Response {

 private Instant timestamp;

 private UUID uuid;

 private String message;



 // getters, setters, and constructor omitted

 }

现在让我们使用它来测试我们的JMeter脚本。默认情况下,它将在端口8080上运行。如果我们无法使用端口8080,则需要相应地更新HTTP Sampler Port Number字段.

HTTP Sampler请求应如下所示:

JMeter

3.使用侦听器编写提取的输出

接下来,让我们使用类型Save Responses to a file的侦听器将所需的数据提取到文件中:

JMeter写监听器

使用此侦听器很方便,但是在提取文件时并没有太大的灵活性。对于我们的情况,这将生成一个JSON文件,该文件保存到JMeter当前正在运行的位置(尽管可以在“ Filename Prefix字段中配置路径)。

PostProcessor编写提取的输出

我们可以将数据提取到文件中的另一种方法是通过创建BeanShell PostProcessorBeanShell是一种非常灵活的脚本处理器,它使我们可以使用Java代码编写脚本,也可以使用JMeter提供的一些内置变量

BeanShell可以用于各种不同的用例。在这种情况下,让我们创建一个BeanShell后处理器,并添加一个脚本来帮助我们将一些数据提取到文件中:

JMeter

现在,将以下脚本添加到“ Script部分:

FileWriter fWriter = new FileWriter("/<path>/result.txt", true);

 BufferedWriter buff = new BufferedWriter(fWriter);



 buff.write("data");



 buff.close();

 fWriter.close();

现在,我们有了一个简单的脚本,该脚本会将字符串data输出到名为result的文件中。这里要注意的重要一点是FileWriter构造函数的第二个参数。必须将其设置为true以便我们的BeanShell将追加到文件中而不是覆盖它。**在JMeter中使用多个线程时,这非常重要。**

接下来,我们想提取一些对我们的用例更有意义的东西。让我们利用JMeter提供**[ctx](https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html)**这将使我们能够访问由运行HTTP请求的单线程持有的上下文。

ctx ,让我们获取响应代码,响应标头和响应正文,并将它们提取到我们的文件中:

buff.write("Response Code : " + ctx.getPreviousResult().getResponseCode());

 buff.write(System.getProperty("line.separator"));

 buff.write("Response Headers : " + ctx.getPreviousResult().getResponseHeaders());

 buff.write(System.getProperty("line.separator"));

 buff.write("Response Body : " + new String(ctx.getPreviousResult().getResponseData()));

如果我们要收集特定的字段数据并将其写入文件,则可以使用[**vars**](https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html)变量。这是我们可以在PostProcessors使用的地图,用于存储和检索字符串数据。

对于这个更复杂的示例,让我们在文件提取器之前PostProcessor这将搜索来自HTTP请求的JSON响应:

JMeter

该提取器将创建一个名为message的变量。剩下要做的就是在文件提取器中引用此变量以将其输出到我们的文件中:

buff.write("More complex extraction : " + vars.get("message"));

注意:我们可以将此方法与其他后处理程序(例如“正则表达式提取器”)结合使用,以更定制的方式收集信息。

5.结论

在本教程中,我们介绍了如何使用BeanShell后处理器和写侦听器将数据从JMeter提取到外部文件。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *