在groovy

时间:2016-02-25 18:06:41

标签: groovy soapui

我正在尝试使用contains运行一个断言但遇到问题。我在SOAPUI Pro中使用groovy编写了下面的代码

def pieceid = context.expand( '${OneDX#ResponseAsXml#//Results[1]/ResultSet[1]/Row[1]/PIECEID[1]}' )
def TrackingNumber = context.expand( '${OneDX#ResponseAsXml#//Results[1]/ResultSet[1]/Row[1]/TRACKINGNUMBER[1]}' )

assert {!TrackingNumber.contains(Pieceid)}

跟踪号码是907598985733,Pieceid是1820480 ....因此,Pieceid不在跟踪号码中。但是,当我运行脚本时,它会通过。你知道我做错了吗

1 个答案:

答案 0 :(得分:1)

在这种情况下看起来像一个微不足道的问题。

的变化:

  • ResponseAsXml替换为Response
  • { .. }语句中删除了assert,并引入了( .. )
  • 看起来,你使用了不正确的变量,即Pieceid,这也是不可用的 - 不正确的情况。

您可以使用已更改的groovy script代码段

def pieceid = context.expand( '${OneDX#Response#//Results[1]/ResultSet[1]/Row[1]/PIECEID[1]}' )
def trackingNumber = context.expand( '${OneDX#Response#//Results[1]/ResultSet[1]/Row[1]/TRACKINGNUMBER[1]}' )
log.info "Tracking number is $trackingNumber  and Piece Id is $pieceid"
assert (!trackingNumber.contains(pieceid)), "Tracking number contains Pieceid"

您也应该能够在日志中看到这两个变量的数据。

我还建议您不要在xpath中使用索引。了解可能由该工具自动生成。原因是如果节点的顺序不同,那么将破坏现有的断言以供以后的测试执行。