我的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}
。就是这样!
答案 0 :(得分:1)
您缺少依赖项:
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_functions</artifactId>
<version>5.0</version>
</dependency>