在我的SOAP UI中,我有两个步骤,一个groovy脚本步骤和一个POST crud方法的rest请求步骤。
在groovy脚本中,我正在创建一个名为“adult”的随机测试用例属性。该值是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名成年乘客确定的,但问题是如果我有多名乘客,我实际上需要“乘客信息”下的多名乘客。所以我需要添加几乎每个额外的成年人:
{
"firstName": "Test",
"lastName": "Tester",
"isLeadPassenger": false,
"age": 30
},
所以我想的是乘客的名字,因为我们不允许重复的名字,我们只是在名字和姓氏的末尾添加一个数字。另外两个字段我们可以保持不变。
所以我的问题是我们如何根据从groovy脚本中随机选择的成年人数量在请求中添加额外的乘客详细信息?
谢谢,
答案 0 :(得分:1)
这是复制乘客的一种方法:注意我必须在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"
}