当前位置: 首页 > 知识库问答 >
问题:

Jmeter JSR223 Groovy逐行读取文件并执行http POST

陆雨华
2023-03-14

>

  • 我正在尝试迭代文件夹中的文件。每个文件都有多个用换行符分隔的json字符串。一旦检索到json,就必须获取json的特定节点并将其发布到http服务器。

    最初我想使用csv数据集配置,但我能够从文件中获得嵌套的json。在完成了一些jmeter的阅读教程之后,我终于使用JSR223创建了一个自定义脚本,该脚本读取文件并放入ctx,采样器将使用ctx发送数据。

    以下是我到现在为止所做的。

    Test plan
        -> Thread group
            -> JSR223 PreProcessor : This is where i am reading file and adding it to vars, its like "json_{number}" and "GETfileLength"
        -> ForEach Controller : This is sibling of Thread group
            -> HTTP Request : Inside for Each controller has a configuration of host, port and the path and in the body i have mentioned ${json_out}
            -> View Results Tree 
            -> Summary Report    
    
        log.info("------ start ----------");
        File file = new File("/data/sample1.json")
        def line;
        def noOfLines=0
        file.withReader { reader ->
            while ((line = reader.readLine()) != null) {
                noOfLines++
                vars.put("json_"+noOfLines, line)
            }
        }
        vars.put("GETfileLength",noOfLines.toString()) ;
        log.info("------ end ----------");
    

      null
  • 共有1个答案

    宫铭
    2023-03-14

    根据文件

    预处理器在提出采样器请求之前执行一些操作。

    检查执行顺序

    尝试使用JSR223采样器而不是JSR223预处理器。您也可以忽略示例结果。

     类似资料:
    • 我正在努力阅读附加的TXT文件,以csv形式显示从文件中读取的每个字段,我做了一个接近我想要的代码,但我没有前进。 TXT文件格式: 我的代码在我想要的位置读取第一行,但下面的行我不能,更不用说重复文件中包含的下一个工资单的读数了。 目前的输出是这样的: 出口应该是怎样的 逐行读取和捕获数据,我必须完成一个工资单,它将在输出中形成一行,第二个工资单将在输出中形成第二行,因此,直到txt文件结束,此

    • 我正在试着阅读我的文件的每一行,其中包含一个用户名列表,并用它创建一个登录系统。我正在尝试实现一个基本的登录系统,它的用户名存储在.txt文件中,但我的代码不工作,我不知道为什么。我认为问题出在检查用户名的循环中。 这是我的代码,但它不起作用,只是打印总是失败: 有什么想法吗?

    • 问题内容: 我在Go中找不到功能。我可以弄清楚如何快速编写一个,但是我只是想知道我是否在这里忽略了一些东西。如何逐行读取文件? 问题答案: _注意: 可接受的答案在早期的Go版本中是正确的。 包中有ReadLine函数。 请注意,如果该行不适合读取缓冲区,则该函数将返回不完整的行。如果要始终通过单次调用函数来读取程序中的整行,则需要将该函数封装到自己的函数中,该函数在for循环中进行调用。 之所以

    • 问题内容: 如何使用fseek逐行读取文件? 代码可能会有所帮助。必须是跨平台和纯PHP。 提前谢谢了 问题答案: 问题是使用fseek进行询问,因此只能假定性能是一个问题,而file()不是解决方案。这是使用fseek的一种简单方法: 我的file.txt 和代码: 输出: 您不必像我一样附加到$ lines数组,如果这是脚本的目的,则可以立即打印输出。如果要限制行数,也很容易引入计数器。

    • 返回一个数组,数组中每个元素是指定文件中的每一行。 在 fs node 包中使用 readFileSync 函数指定文件中创建一个 Buffer 。使用 toString(encoding) 函数将 buffer 转换为字符串。通过逐行 split 文件内容(每个\n)根据文件内容创建一个数组。 const fs = require('fs'); const readFileLines = fil

    • 问题内容: 我刚刚开始学习Swift。我有要从文本文件读取的代码,应用程序显示了整个文本文件的内容。如何显示一行一行并多次调用该行? 包含以下内容: 以下是目前的情况。 如果还有另一种方法,请告诉我。将不胜感激。 问题答案: 斯威夫特3.0 该变量应该是数据的每一行。 使用的代码来自: 在用Obj-C编写的iOSSDK中逐行读取文件并使用NSString 查看旧版Swift的编辑历史记录。