我需要随机生成多个订单(1-10),每个订单随机包含产品(1-20)。项是从csv文件发送的。我如何在Jmeter中自定义请求体来实现这一点?
{
"multipleOrders": [
{
"orderId": "12345678",
"products": [
{
"productId": "1",
"value": [
{
"item":"1"
}
]
},
{
"productId": "2",
"value": [
{
"item":"2"
}
]
}
]
},
{
"orderId": "98765432",
"products": [
{
"productId": "4",
"value": [
{
"item":"4"
}
]
}
]
}
]
}
我不认为发送随机数量的项目是你应该真正做的,因为测试需要是可重复的,并且给定每个请求都会假设随机的,因此不同数量的参数,你将无法再次重新运行相同的测试,以解决问题。
。
如果没有看到"项目"是如何进行的,是不可能给出一个全面的答案的。在您的CSV文件中组织。
你可以像这样在Groovy中读取这个文件:
def lines = new File('/path/to/your/file.csv').readLines()
你可以在Groovy中使用JsonBuilder类
创建JSONdef payload = [:]
def multipleOrders = []
1.upto(org.apache.commons.lang3.RandomUtils.nextInt(1, 20), index -> {
def order = [:]
def lineFromCsv = lines.get(index as int)
order.put('orderId', lineFromCsv.split(',')[0])
//etc.
multipleOrders.add(order)
})
payload.put('multipleOrders', multipleOrders)
vars.put('payload', new groovy.json.JsonBuilder(payload).toPrettyString())
修改上面的代码片段以符合您的要求。
更多信息:
- Apache Groovy: Groovy是用来做什么的?
- Apache Groovy -解析和生成JSON