【问题标题】:JMETER: Need to send all entries in a CSV file to HTTP request body in 'one' requestJMETER:需要将 CSV 文件中的所有条目发送到“一个”请求中的 HTTP 请求正文
【发布时间】:2020-08-06 21:39:45
【问题描述】:

我正在尝试解决 Jmeter 中的测试数据问题。你们中的任何人都可以看看下面的问题陈述并在这里提出建议吗?

要求:需要将CSV文件中的所有条目发送到'one'请求中的HTTP请求正文到端点。

CSV 文件示例:

"adsfas123wsf00000wqefqwe52145t10000",
"fdfrgvergq120947r0000dwsfqwaef237sadf",
"wfrqwef7865034r78tkahsefjh6985r7asfdaf",
"qefqwe52145t10000adsfas123wsf00000w",
"wsfqwaef237sadffdfrgvergq120947r0000d"

HTTP 请求正文: ["${data}"}]

当数据被替换时,我应该能够得到以下输出。

[
"adsfas123wsf00000wqefqwe52145t10000",
"fdfrgvergq120947r0000dwsfqwaef237sadf",
"wfrqwef7865034r78tkahsefjh6985r7asfdaf",
"qefqwe52145t10000adsfas123wsf00000w",
"wsfqwaef237sadffdfrgvergq120947r0000d"
]

问题陈述:当我使用 CSV 数据集配置时。文件,我无法将所有条目连接到一个请求正文中。我的理解是,CSV 数据集配置。该文件在这里不是正确的选择。

在 StackOverflow 中进行了一些搜索,并按照使用 JSR223 PreProcessor 的方法实现上述目标,链接为 How to send multiple json body using jmeter?

按照上面的链接并尝试在提供的自定义代码下方添加。

def builder = new StringBuilder()
new File('/path/to/plans.csv').readLines().each { line ->
    builder.append(new File(line).text).append(System.getProperty('line.separator'))
}
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', builder.toString(), '')
sampler.setPostBodyRaw(true)

运行时,我收到以下错误消息,

Caused by: java.io.FileNotFoundException,
"adsfas123wsf00000wqefqwe52145t10000",
"fdfrgvergq120947r0000dwsfqwaef237sadf",
"wfrqwef7865034r78tkahsefjh6985r7asfdaf",
"qefqwe52145t10000adsfas123wsf00000w",
"wsfqwaef237sadffdfrgvergq120947r0000d" (The filename, directory name, or volume label syntax is incorrect)

如果找不到文件,那么如何读取条目并将其显示在日志查看器中?

另外,如何将自定义代码的输出链接到请求正文?还是由自定义代码自己处理?

【问题讨论】:

    标签: jmeter performance-testing load-testing


    【解决方案1】:

    您的代码有错误,请更改此行:

    builder.append(new File(line).text).append(System.getProperty('line.separator'))
    

    到这个:

    builder.append(line).append(System.getProperty('line.separator'))
    

    如果您想发送文件的完整内容,甚至不需要编写脚本,您可以在 HTTP 请求采样器的“正文数据”选项卡中使用__FileToString() function

    ${__FileToString(/path/to/plans.csv,,)}
    

    最后但并非最不重要的一点是,如果您需要从纯文本生成 JSON,那么使用 JsonBuilder 类可能是一个更好的主意,请参阅 Apache Groovy - Why and How You Should Use ItApache Groovy - Parsing and producing JSON

    【讨论】:

    • 嗨德米特里。感谢您的评论。以下代码现在对我有用。 String fileContents = new File('Z:/test.csv').text sampler.getArguments().removeAllArguments() sampler.addNonEncodedArgument('', fileContents, '') sampler.setPostBodyRaw(true)
    【解决方案2】:

    两步:

    1. HTTP 请求之前添加用户参数预处理器:

    名称:DATA

    User_1:${__FileToString(/path/to/plans.csv,,)}

    1. 在请求正文中添加以下内容:

    ${DATA}

    【讨论】:

    • 谢谢。会试一试的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2014-08-08
    • 2012-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多