SoapUi 断言 - 使用字符串作为 json 路径 groovy
SoapUi Assertions - Use a string as a json path with groovy
我正在使用 groovy 在 SoapUI 上自动执行一些测试,我还想以一种从 *.txt 文件中获取字段名称和值并检查是否需要字段的方式自动执行断言SOapUI 响应中确实存在所需的值。
假设我有以下 json 响应:
{
"path" : {
"field" : "My Wanted Value"
}
}
从我的文本文件中我将得到以下两个字符串:
path="path.field"
value="My Wanted Value"
我尝试了以下方法:
import groovy.json.JsonSlurper
def response = messageExchange.response.responseContent
def slurper = new JsonSlurper()
def json = slurper.parseText response
assert json.path==value;
但是当然不行。
知道如何完成吗?
谢谢
我认为您的问题是从基于 .
符号的路径访问 json 值,在您的情况下 path.field
要解决此问题,您可以使用以下方法:
import groovy.json.JsonSlurper
def path='path.field'
def value='My Wanted Value'
def response = '''{
"path" : {
"field" : "My Wanted Value"
}
}'''
def json = new JsonSlurper().parseText response
// split the path an iterate over it step by step to
// find your value
path.split("\.").each {
json = json[it]
}
assert json == value
println json // My Wanted Value
println value // My Wanted Value
此外,我不确定您是否也在询问如何从文件中读取值,如果这也是一项要求,您可以使用 ConfigSlurper
来执行此操作,假设您有一个名为 myProps.txt
与您的内容:
path="path.field"
value="My Wanted Value"
您可以使用以下方法访问它:
import groovy.util.ConfigSlurper
def urlFile = new File('C:/temp/myProps.txt').toURI().toURL()
def config = new ConfigSlurper().parse(urlFile);
println config.path // path.field
println config.value // My Wanted Value
全部(json路径+从文件读取配置):
import groovy.json.JsonSlurper
import groovy.util.ConfigSlurper
def response = '''{
"path" : {
"field" : "My Wanted Value"
}
}'''
// get the properties from the config file
def urlFile = new File('C:/temp/myProps.txt').toURI().toURL()
def config = new ConfigSlurper().parse(urlFile);
def path=config.path
def value=config.value
def json = new JsonSlurper().parseText response
// split the path an iterate over it step by step
// to find your value
path.split("\.").each {
json = json[it]
}
assert json == value
println json // My Wanted Value
println value // My Wanted Value
希望这对您有所帮助,
我正在使用 groovy 在 SoapUI 上自动执行一些测试,我还想以一种从 *.txt 文件中获取字段名称和值并检查是否需要字段的方式自动执行断言SOapUI 响应中确实存在所需的值。
假设我有以下 json 响应:
{
"path" : {
"field" : "My Wanted Value"
}
}
从我的文本文件中我将得到以下两个字符串:
path="path.field"
value="My Wanted Value"
我尝试了以下方法:
import groovy.json.JsonSlurper
def response = messageExchange.response.responseContent
def slurper = new JsonSlurper()
def json = slurper.parseText response
assert json.path==value;
但是当然不行。
知道如何完成吗?
谢谢
我认为您的问题是从基于 .
符号的路径访问 json 值,在您的情况下 path.field
要解决此问题,您可以使用以下方法:
import groovy.json.JsonSlurper
def path='path.field'
def value='My Wanted Value'
def response = '''{
"path" : {
"field" : "My Wanted Value"
}
}'''
def json = new JsonSlurper().parseText response
// split the path an iterate over it step by step to
// find your value
path.split("\.").each {
json = json[it]
}
assert json == value
println json // My Wanted Value
println value // My Wanted Value
此外,我不确定您是否也在询问如何从文件中读取值,如果这也是一项要求,您可以使用 ConfigSlurper
来执行此操作,假设您有一个名为 myProps.txt
与您的内容:
path="path.field"
value="My Wanted Value"
您可以使用以下方法访问它:
import groovy.util.ConfigSlurper
def urlFile = new File('C:/temp/myProps.txt').toURI().toURL()
def config = new ConfigSlurper().parse(urlFile);
println config.path // path.field
println config.value // My Wanted Value
全部(json路径+从文件读取配置):
import groovy.json.JsonSlurper
import groovy.util.ConfigSlurper
def response = '''{
"path" : {
"field" : "My Wanted Value"
}
}'''
// get the properties from the config file
def urlFile = new File('C:/temp/myProps.txt').toURI().toURL()
def config = new ConfigSlurper().parse(urlFile);
def path=config.path
def value=config.value
def json = new JsonSlurper().parseText response
// split the path an iterate over it step by step
// to find your value
path.split("\.").each {
json = json[it]
}
assert json == value
println json // My Wanted Value
println value // My Wanted Value
希望这对您有所帮助,