从Java应用程序和GUI模式运行jmx时看到差异

时间:2018-10-26 02:03:02

标签: jmeter

我的Java pom.xml具有以下依赖关系:

       <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>5.0</version>
        </dependency>

在我的jmx文件中-> jsr223断言,我有这个简单的功能:

log.info(prev.getResponseDataAsString())

从GUI模式运行时,我可以看到在控制台中记录的完整响应,但是当我的Java应用程序执行相同的jmx时,我得到了:

2018/10/25 20:50:53,576 12050 [INFO  ] [Thread Group 1-1] (?:?) – 
${__FileToString(${inputFilePath},,)}

这是因为我错过了pom.xml中的某些依赖项吗?由于它总是返回

  

$ {__ FileToString($ {inputFilePath} ,,)}

不是导致我无法继续其余测试的实际响应。其余的一切都取决于此结果。此功能来自HTTP请求采样器的 正文数据 !如果我在那里提供实际的正文,那么我就能运行jmx……知道如何处理此动态正文数据吗?

更新1 我找到了解决方案!而是直接在HTTP Request Sampler的主体数据中使用${__FileToString(${inputFilePath},,)},我可以在HTTP Request Sampler之上再创建一个JSR223 Sampler,在该采样器中,我可以这样做:

import org.apache.commons.io.FileUtils
log.info("--------------------------------------- "+ '${inputFilePath}')
String content = FileUtils.readFileToString(new File('${inputFilePath}'))

vars.put("reqBody", content)

,然后在HTTP Request Sampler的主体数据中,执行${reqBody}。就是这样!

1 个答案:

答案 0 :(得分:1)

您缺少依赖项:

  <dependency>
        <groupId>org.apache.jmeter</groupId>
        <artifactId>ApacheJMeter_functions</artifactId>
        <version>5.0</version>
    </dependency>