Groovy SoapUI如何在下一步的脚本断言中获取属性转移TestStep

Groovy SoapUI如何在下一步的脚本断言中获取属性转移TestStep,groovy,soapui,autotest,Groovy,Soapui,Autotest,我正在使用SoapUi 5.3.0测试这样一个案例: 我有3个API:图书列表、将图书添加到收藏夹列表和收藏夹列表。 我向一个测试用例添加了3个API作为测试步骤来测试用例:用户查看图书列表,选择列表中的第一本书,然后添加到收藏夹列表,然后用户转到收藏夹列表以验证该书是否显示在收藏夹列表的第一位。 我在步骤1和步骤2之间添加了一个propertyTransfer,从步骤1的响应中获取book_id,然后用于下一步请求的参数。 在步骤3,我添加了一个按脚本断言的断言,如下所示: import gr

我正在使用SoapUi 5.3.0测试这样一个案例: 我有3个API:图书列表、将图书添加到收藏夹列表和收藏夹列表。 我向一个测试用例添加了3个API作为测试步骤来测试用例:用户查看图书列表,选择列表中的第一本书,然后添加到收藏夹列表,然后用户转到收藏夹列表以验证该书是否显示在收藏夹列表的第一位。 我在步骤1和步骤2之间添加了一个propertyTransfer,从步骤1的响应中获取book_id,然后用于下一步请求的参数。 在步骤3,我添加了一个按脚本断言的断言,如下所示:

import groovy.json.JsonSlurper

//get propertyTransfer value
def tcProperty = messageExchange.modelItem.testStep.testCase.getTestStepByName("propertyTransfer").getPropertyValue("book_id")

// get response message of Favorite book api
def responseMessage = messageExchange.response.responseContent

// get book_id of the first book in favorite list
def jsonSlurper = new JsonSlurper().parseText(responseMessage)
bookId = jsonSlurper.data[0].book_id

// verify 
assert bookId == tcProperty
但是脚本返回失败,并显示一个错误,如attach photo

tcProperty似乎为null,这意味着我无法获取propertyTransfer值。
那么,我错在哪里呢?

您可以使用属性转移测试步骤,也可以不使用属性转移测试步骤,即对请求步骤本身使用脚本断言

如果使用了
脚本断言
,则根本不需要
属性转移
步骤

其思想是提取所需的值,并在脚本断言中将其设置为测试用例级别的自定义属性

现在,您希望在下一步中使用上述提取的值,这可以使用属性扩展来完成

以下是脚本断言:

//Check if the response is not empty
assert context.response, 'Response is empty or null'
def jsonSlurper = new groovy.json.JsonSlurper().parseText(context.response)
bookId = jsonSlurper.data[0].book_id

assert bookId, 'Book id is empty or null'

//Set the bookId as test case level property
context.testCase.setPropertyValue('BOOK_ID', bookId)

在下一步中,在需要图书ID的地方使用属性扩展,即
${TestCase\BOOK\u ID}
,您可以使用属性转移测试步骤,也可以不使用属性转移测试步骤,即对请求步骤本身使用脚本断言

如果使用了
脚本断言
,则根本不需要
属性转移
步骤

其思想是提取所需的值,并在脚本断言中将其设置为测试用例级别的自定义属性

现在,您希望在下一步中使用上述提取的值,这可以使用属性扩展来完成

以下是脚本断言:

//Check if the response is not empty
assert context.response, 'Response is empty or null'
def jsonSlurper = new groovy.json.JsonSlurper().parseText(context.response)
bookId = jsonSlurper.data[0].book_id

assert bookId, 'Book id is empty or null'

//Set the bookId as test case level property
context.testCase.setPropertyValue('BOOK_ID', bookId)

在下一步中,使用属性扩展,即,
${TestCase\BOOK\u ID}
在需要BOOK ID的地方使用

您有机会尝试解决方案吗?您有机会尝试解决方案吗?