我在循环控制器中有一个HTTP请求。我还有多个.json文件,这些文件包含基于我发布的数据库中的唯一约束的唯一值。每个文件都遵循命名约定Contract_ n .json。 (其中n = 1,2,3等)
问题在于:
如何让HTTP Request的Body在每个循环中获取不同的文件。我试图找出实现这一目标的最佳方法。我已经验证了我是否对完整文件名进行了硬编码,它在第一个线程循环中成功。
${__FileToString(C:/.../.../recallable payloads/${__eval(Contract_1)}.json,,)}
我已经尝试了以下内容,但都失败了:
${__FileToString(C:/.../.../recallable payloads/${__eval(Contract_(.+?))}.json,,)}
${__FileToString(C:/.../.../recallable payloads/${__eval(Contract_)(.+?)}.json,,)}
${__FileToString(C:/.../.../recallable payloads/${__eval(Contract_)}(.+?).json,,)}
关键是,我不能将所有记录都放在一个文件中,因为这种情况不太现实。每个必须单独存储,并通过线程在每个循环上由HTTP请求获取。
HTTP Request and thread layout
我刚刚了解了_StringFromFile函数。我应该使用它吗?
我已尝试在身体中使用以下物品。
${_StringFromFile(Contract_#'.'json,,1,2)}
这导致
POST http://..../2002/crud/Contract
POST data:
**ERR**
"RuntimeException",
"cause": null,
"message": "Unexpected character ('*' (code 42)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n
然而我无法在任何地方找到*。
答案 0 :(得分:0)
如果您使用的是jmeter循环控制器,则可以添加计数器配置元素。看看这里 how to set counter of loop inside loop correctly inside jmeter?
另外我建议将路径放在用户定义的Variables配置元素中以简化事情......就像这样 LOCALDIR $ {__ BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer()。getBaseDir(),)}
然后你可以参考你的配置,比如$ {localDir} / Contract _ $ {counter_index} .json
如果您对jmeter的结构进行屏幕截图,将会很有帮助。