如何在 json 请求中添加额外数据
How to add extra data in a json request
在我的 SOAP UI 中,我有两个步骤,一个 groovy 脚本步骤和一个 POST CRUD 方法的休息请求步骤。
在 groovy 脚本中,我正在创建一个名为 'adults' 的随机测试用例 属性。该值是2-5之间的随机值。
testRunner.testCase.setPropertyValue('adults', String.valueOf((int)Math.random()*5)+2);
以下是我对POST的休息要求:
{
"xxx": "xxx",
"ratePlanCode": "xxx"
"roomOccupancies": [
{
"passengersInformation": [
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": true,
"age": 30
},
]
}
],
"xxx": "xxx"
}
现在这个请求固定为1个成人乘客,但问题是如果我有多个乘客,我实际上需要"passengersInformation"下的多个乘客。所以实际上我需要为每个额外的成年人添加:
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": false,
"age": 30
},
所以我想的是乘客的名字,因为我们不允许重名,我们只是在名字和姓氏的末尾添加一个数字。其他两个字段我们可以保持不变。
所以我的问题是,我们如何根据从 groovy 脚本中随机选择的成人人数在请求中添加额外的乘客详细信息?
谢谢,
这是复制乘客的一种方法:请注意,我必须在 JSON 字符串中修复几个逗号(多余的和缺失的)。
import groovy.json.*
def jsonData = '''{
"hotelArrivalDate": "2017-06-01T18:15:00",
"ratePlanCode": "xxx=",
"roomOccupancies": [
{
"passengersInformation": [
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": true,
"age": 30
}
]
}
],
"holidaysBookingReference": "TestRef"
}'''
def n=1
def data = (new JsonSlurper()).parseText(jsonData)
def newPerson = data.roomOccupancies[0].
passengersInformation[0].
collectEntries {k,v ->
['firstName','lastName'].contains(k) ? [k,v+n] : [k,v]
}
data.roomOccupancies[0].passengersInformation << newPerson
jsonData = (new JsonBuilder(data)).toPrettyString()
结果
{
"hotelArrivalDate": "2017-06-01T18:15:00",
"ratePlanCode": "xxx=",
"roomOccupancies": [
{
"passengersInformation": [
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": true,
"age": 30
},
{
"firstName": "Test1",
"lastName": "Tester1",
"isLeadPassenger": true,
"age": 30
}
]
}
],
"holidaysBookingReference": "TestRef"
}
在我的 SOAP UI 中,我有两个步骤,一个 groovy 脚本步骤和一个 POST CRUD 方法的休息请求步骤。
在 groovy 脚本中,我正在创建一个名为 'adults' 的随机测试用例 属性。该值是2-5之间的随机值。
testRunner.testCase.setPropertyValue('adults', String.valueOf((int)Math.random()*5)+2);
以下是我对POST的休息要求:
{
"xxx": "xxx",
"ratePlanCode": "xxx"
"roomOccupancies": [
{
"passengersInformation": [
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": true,
"age": 30
},
]
}
],
"xxx": "xxx"
}
现在这个请求固定为1个成人乘客,但问题是如果我有多个乘客,我实际上需要"passengersInformation"下的多个乘客。所以实际上我需要为每个额外的成年人添加:
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": false,
"age": 30
},
所以我想的是乘客的名字,因为我们不允许重名,我们只是在名字和姓氏的末尾添加一个数字。其他两个字段我们可以保持不变。
所以我的问题是,我们如何根据从 groovy 脚本中随机选择的成人人数在请求中添加额外的乘客详细信息?
谢谢,
这是复制乘客的一种方法:请注意,我必须在 JSON 字符串中修复几个逗号(多余的和缺失的)。
import groovy.json.*
def jsonData = '''{
"hotelArrivalDate": "2017-06-01T18:15:00",
"ratePlanCode": "xxx=",
"roomOccupancies": [
{
"passengersInformation": [
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": true,
"age": 30
}
]
}
],
"holidaysBookingReference": "TestRef"
}'''
def n=1
def data = (new JsonSlurper()).parseText(jsonData)
def newPerson = data.roomOccupancies[0].
passengersInformation[0].
collectEntries {k,v ->
['firstName','lastName'].contains(k) ? [k,v+n] : [k,v]
}
data.roomOccupancies[0].passengersInformation << newPerson
jsonData = (new JsonBuilder(data)).toPrettyString()
结果
{
"hotelArrivalDate": "2017-06-01T18:15:00",
"ratePlanCode": "xxx=",
"roomOccupancies": [
{
"passengersInformation": [
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": true,
"age": 30
},
{
"firstName": "Test1",
"lastName": "Tester1",
"isLeadPassenger": true,
"age": 30
}
]
}
],
"holidaysBookingReference": "TestRef"
}