jMeter:将CSV文件中多行加载到HTTP正文中

h4cxqtbf  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(117)

我正在尝试构建一个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)

玩得开心点!

qacovj5a

qacovj5a1#

您将无法获得上面提供的内容,动态构建JSON请求主体的唯一方法是使用JSR223PreProcessor以编程方式构造它
1.将JSR223预处理器添加为要参数化其主体的请求的子级
1.将以下代码放入“Script”区域:

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)

1.就是这样,当您运行测试时,PreProcessor将从CSV文件生成请求主体,并将其动态添加到HTTP请求采样器中。
参考文献:

相关问题