jmeter - jMeter:将多行从 CSV 文件加载到 HTTP 正文中
问题描述
我正在尝试为接受项目列表的服务构建 HTTP 请求,例如:
{
"user": "john",
"table": "goods",
"articles": [
{"id": "003", "quantity": 1},
{"id": "004", "quantity": 1},
{"id": "023", "quantity": 2},
{"id": "011", "quantity": 3},
{"id": "063", "quantity": 1},
{"id": "006", "quantity": 7}
]
}
我的目标是从 CSV 文件中加载所有文章,如下所示:
我想要类似的东西:
{
"user": "john",
"table": "goods",
"articles": [
{"id": "${id}", "quantity": ${qte}}
]
}
谁能帮我?
更新:
Dmitri T 解决了我的问题,谢谢!我还问他如何将 JSON 对象(字典)添加到我的身体中,而他回答我找到了一个解决方案,如果有人需要,我将在这里分享。如果要添加:
"user": {"id": 1, "name": "John"}
到你的身体内容,你只需要这样做:
def user = [:]
//populate user
user.put('id', 1)
user.put('name', 'John')
//add user entity to body content
content.put("user", user)
玩得开心!
解决方案
您将无法获得上面提供的内容,动态构建 JSON 请求主体的唯一方法是使用JSR223 PreProcessor以编程方式构建它
- 将 JSR223 PreProcessor 添加为要参数化哪个主体的请求的子项
将以下代码放入“脚本”区域:
def content = [:] content.put('user', 'john') content.put('table', 'goods') def articles = [] new File('test.csv').readLines().each { line -> def article = [:] article.put('id', line.split(',')[0]) article.put('quantity', line.split(',')[1]) articles.add(article) } content.put('articles', articles) sampler.addNonEncodedArgument('', new groovy.json.JsonBuilder(content).toPrettyString(), '') sampler.setPostBodyRaw(true)
- 就是这样,当您运行测试时,预处理器将从 CSV 文件生成请求正文,并将其动态添加到HTTP 请求采样器。
参考:
推荐阅读
- c# - Google 报告未显示在 Mvc c# 的 pdf 报告中
- tailwind-css - 在全屏 div 中与 Tailwind CSS 垂直对齐
- typescript - typescript compiler api - 如何检测属性类型是枚举还是对象
- mysql - MySQL在插入触发器之前删除插入条件
- mysql - 如何避免添加重复的外键约束
- arrays - 关联列的脚本
- angular - Angular buildOptimizer 打破引导轮播过渡效果
- python-3.x - 单例类实例化:RecursionError:超出最大递归深度
- azure - Azure 函数 Cosmos DB 输出绑定 - 自定义 JsonSerializerSettings
- javascript - Meteor/Cordova 应用程序未将 graph.facebook 图像保存到数据缓存中