SoapUi Assertions - 使用字符串作为带有groovy的json路径

时间:2015-06-02 11:14:37

标签: json string groovy soapui assertions

我正在使用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;

但当然它不起作用。

我知道如何才能完成它?

谢谢

1 个答案:

答案 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

希望这有帮助,