我使用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值。 那我错在哪里?
答案 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