如何在Soap UI中为负载测试生成json请求的动态值

时间:2018-01-08 04:08:52

标签: json groovy soapui soap-client

我有一个类似于以下请求的Json请求。

{"age": { "description": "Age in years", "type": "integer", "minimum": "1" }, "details":{ "name":"John", "age":"30", "cars":"BMW" }}

在名称字段中,它应该只选择三个选定的名称(例如:John,Jim,James)。在年龄和汽车领域,它应该动态地改变价值。我在Java中尝试过我能做到的。我想在SoapUi做,任何人都可以帮我SoapUi

1 个答案:

答案 0 :(得分:0)

如果要动态(或随机)生成JSON对象,可以尝试以下方法:

import groovy.json.JsonOutput

def names = ['John', 'Jim', 'James']
def cars = ['BMW', 'Toyota', 'Ford', 'Honda']
def ages = 18..50

def random = new Random()

def obj = [
        name: names.get(random.nextInt(names.size())),
        age: ages.get(random.nextInt(ages.size())),
        car: cars.get(random.nextInt(cars.size()))
]

def json = new JsonOutput().toJson(obj)

这里发生的是我们定义名称,汽车和年龄的列表,然后我们随机选择每个列表中的一个元素并构建最终对象。最后,我们使用JsonOutput.toJson()方法将对象(在这种情况下为Map<String,Object>类型)编组为String

运行此脚本几次并打印json变量将产生类似于此的输出:

{"name":"John","age":40,"car":"Toyota"}
{"name":"James","age":28,"car":"Honda"}
{"name":"James","age":26,"car":"Ford"}
{"name":"Jim","age":32,"car":"Honda"}

当然,这只是一个显示一般用例的示例。我无法创建您期望的最终JSON,因为您发布的示例不是有效的JSON对象。我想您可以将此示例应用于您的特定用例,并构建一个满足您所有期望的最终JSON。