SoapUI-断言属性传递值是否在返回列表中

时间:2018-10-31 11:38:02

标签: soapui assertion

这是我的第一篇文章,所以请保持温柔:)

在免费的SoapUI版本中,我想使用以下简单方案测试一些REST API: POST,而不是GET检查帖子。 在我的测试套件中,我有一个测试用例,该用例包含以下步骤: 1.发布 2.财产转让; 3.获取。

使事情变得复杂的是POST响应不包含任何参数-值对。它返回的json仅包含一个实际上是id的值(它对应于taskId参数)。

在属性传输步骤中,我选择了POST作为源,选择Response作为属性,选择XPath作为Path语言(使用jsonPath返回null)。 在Tar​​get中,我选择了Test Suite,将propertyTest作为Property并将XPath作为Path语言(如果使用JSONPath,则在此处接收值)。 当我运行属性传递时,它会正确返回传递的值。

最后,在我的最后一步-GET: GET仅在有过滤器的情况下返回列表,因此在创建它时(在organizationId中创建过滤器时,我已在GET方法中给出了相应的参数和值)。此方法返回一个json,该json具有对应的taskId(在此列表中命名为organizationId)的所有ownerOrganizatioId(在此列表中命名为“ id”)。 在测试步骤中,我想断言POST的新值响应实际上在检索到的列表中。我正在尝试使用JsonPath Match断言来做到这一点。

如果我使用以下表达式:$.[?(@.ownerOrganizationId==2)].id,它将实际上从数据库中返回所有id(taskId)。 到目前为止,一切都很好。但是现在,我想断言新的id值实际上在此列表中。 我知道我可以使用此表达式{#TestSuite1#TaskTypeIdPropertyTransfer}来使用发布的值,但是我不知道的是:要检查其是否在列表中的断言表达式是什么?

感谢您抽出宝贵的时间阅读和调查此问题,如果需要更多详细信息,请告诉我。

关于, 保罗

1 个答案:

答案 0 :(得分:0)

如果我对我的理解正确,则可能需要执行一些Groovy脚本,如下所示:

def id = {insert something to assign the id you need to find in the list}
def idList = {insert something to fetch the list}
def idFound = false
for (def currentId : idList) {
    if (id.equals(currentId)) {
        idFound = true
        break
    }
}
assert(idFound==true)