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

希望这对您有所帮助,