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

时间:2017-06-30 08:19:44

标签: groovy soapui autotest

我使用SoapUi 5.3.0来测试这样的案例: 我有3个apis:书籍列表,将书籍添加到收藏列表,以及收藏夹列表。 我将1个apis添加到TestCase作为TestSteps来测试案例:用户视图书列表,选择列表中的第一本书然后添加到收藏夹列表,之后用户转到收藏列表以验证书籍是否显示在首位在收藏夹列表中。 我在步骤1和步骤2之间添加了propertyTransfer,以便从第1步的响应中获取book_id,然后使用下一步请求的参数。 在第3步,我通过Script Assertion添加一个断言,如下所示:

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

但脚本返回失败,并显示错误,如附加照片 enter image description here 似乎tcProperty为null,意味着我无法获得propertyTransfer值。 那我错在哪里?

1 个答案:

答案 0 :(得分:0)

您可以使用Property Transfer测试步骤,也可以不使用它,即使用Script Assertion作为请求步骤本身。

如果使用Script Assertion,则根本不需要Property Transfer步。

这个想法是提取所需的值,并在Script Assertion中将它设置为测试用例级自定义属性。

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

这是脚本断言:

//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_ID},只要您需要图书ID