使用 Apache JMeter 对多个 Body 进行压力测试 POST
Stress Test POST with Multiple Body using Apache JMeter
如何使用指定的 body 数据对 POST 多个 Body 进行压力测试?
这是我的 Body 数据:
{
"car": {
"brand": "toyota",
"model": "avanza",
},
"customer_id": "string"
}
如何使用多个 body 对其进行压力测试?
像这样的例子:
{
"car": {
"brand": "toyota",
"model": "avanza",
},
"customer_id": "string"
}
{
"car": {
"brand": "daihatsu",
"model": "xenia",
},
"customer_id": "string"
}
{
"car": {
"brand": "suzuki",
"model": "ertiga",
},
"customer_id": "string"
}
我试过使用 User Defined Variables
,但我不能使用这个,因为我需要来自 brand
和 model
的特定 body 数据。不是这样的brand = toyota, model = ertiga
您可以参数化 band/model 并尝试读取表格 csv 文件
所以你的身材会是这样
"car": {
"brand": "${BRAND}",
"model": "${MODEL}"},
"customer_id": "string"}
您的 csv 文件将如下所示
BRAND,MODEL
toyota,avanza
suzuki,ertiga
daihatsu,xenia
要从 CSV 中读取数据,请查看 CSV_Data_Set_Config
首先,您需要将这些 brand/model 对存储在某处,即存储在如下所示的文件中:
toyota,avanza
suzuki,ertiga
daihatsu,xenia
其次,你需要生成请求体JSON(顺便说一句,你的例子is not valid,我的代码片段假定以下输出:
[
{
"car": {
"brand": "toyota",
"model": "avanza"
},
"customer_id": "string"
},
{
"car": {
"brand": "daihatsu",
"model": "xenia"
},
"customer_id": "string"
},
{
"car": {
"brand": "suzuki",
"model": "ertiga"
},
"customer_id": "string"
}
]
将 JSR223 PreProcessor 添加为要参数化的请求的子项,并将以下代码放入“脚本”区域:
def payload = []
new File('test.csv').readLines().each { line ->
def car = [:]
car.put('brand', line.split(',')[0])
car.put('model', line.split(',')[1])
def car_entry = [:]
car_entry.put('car', car)
car_entry.put('customer_id', 'string')
payload.add(car_entry)
}
vars.put('payload', new groovy.json.JsonBuilder(payload).toPrettyString())
就是这样,您应该能够将生成的请求正文引用为 ${payload}
JMeter Variable 需要的地方
更多信息:
如何使用指定的 body 数据对 POST 多个 Body 进行压力测试?
这是我的 Body 数据:
{
"car": {
"brand": "toyota",
"model": "avanza",
},
"customer_id": "string"
}
如何使用多个 body 对其进行压力测试?
像这样的例子:
{
"car": {
"brand": "toyota",
"model": "avanza",
},
"customer_id": "string"
}
{
"car": {
"brand": "daihatsu",
"model": "xenia",
},
"customer_id": "string"
}
{
"car": {
"brand": "suzuki",
"model": "ertiga",
},
"customer_id": "string"
}
我试过使用 User Defined Variables
,但我不能使用这个,因为我需要来自 brand
和 model
的特定 body 数据。不是这样的brand = toyota, model = ertiga
您可以参数化 band/model 并尝试读取表格 csv 文件 所以你的身材会是这样
"car": {
"brand": "${BRAND}",
"model": "${MODEL}"},
"customer_id": "string"}
您的 csv 文件将如下所示
BRAND,MODEL
toyota,avanza
suzuki,ertiga
daihatsu,xenia
要从 CSV 中读取数据,请查看 CSV_Data_Set_Config
首先,您需要将这些 brand/model 对存储在某处,即存储在如下所示的文件中:
toyota,avanza suzuki,ertiga daihatsu,xenia
其次,你需要生成请求体JSON(顺便说一句,你的例子is not valid,我的代码片段假定以下输出:
[ { "car": { "brand": "toyota", "model": "avanza" }, "customer_id": "string" }, { "car": { "brand": "daihatsu", "model": "xenia" }, "customer_id": "string" }, { "car": { "brand": "suzuki", "model": "ertiga" }, "customer_id": "string" } ]
将 JSR223 PreProcessor 添加为要参数化的请求的子项,并将以下代码放入“脚本”区域:
def payload = [] new File('test.csv').readLines().each { line -> def car = [:] car.put('brand', line.split(',')[0]) car.put('model', line.split(',')[1]) def car_entry = [:] car_entry.put('car', car) car_entry.put('customer_id', 'string') payload.add(car_entry) } vars.put('payload', new groovy.json.JsonBuilder(payload).toPrettyString())
就是这样,您应该能够将生成的请求正文引用为
${payload}
JMeter Variable 需要的地方
更多信息: