我正在使用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;
但当然它不起作用。
我知道如何才能完成它?
谢谢
答案 0 :(得分:2)
我认为您的问题是从基于.
表示法的路径访问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
这样做,假设您有一个名为{{1的文件与您的内容:
myProps.txt
您可以使用以下方法访问它:
path="path.field"
value="My Wanted Value"
所有在一起(json路径+从文件读取配置):
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
希望这有帮助,