使用具有空值的数据源参数的SoapUI Conditional Goto步骤

时间:2014-06-02 07:20:26

标签: soapui assert goto

我在soapUI中使用excel数据源。 我的数据源中的一些单元格是空白的

例如,并非所有用户都有packageID:

user    age     packageID
a       18  
b       21      123456
c       11  

我想添加条件转到步骤,如果packageID为空,请转到目标步骤

我试过了:

${DataSource# packageID} == null

但失败了,记录:

  

缺少匹配条件

3 个答案:

答案 0 :(得分:2)

所需的解决方案是有条件转到评估:

'${DataSource#packageID}'='false'

matches('${DataSource#packageID}','false')

注意:

  • 评估是XPath,=而不是==,
  • 上下文参数及其值始终是字符串,因此两者都必须引用
  • 几乎任何东西都可以作为条件
  • 没有人喜欢到处放置微小的groovy脚本,所以这是一种很好的视觉方式

答案 1 :(得分:1)

在SOAPUI中,条件转到步骤中的条件必须是XPath表达式,XPath等于运算符是=。因此,请使用一个相等的符号=代替==。我没有SOAPUI PRO因此我无法添加datSource而我无法尝试,但我认为您可以使用emptyexists XPath实现此目的功能,试试:

exists(${DataSource#packageID}) = false

empty(${DataSource#packageID})

编辑:

如果上面的答案不起作用,你可以尝试使用groovy进行条件步骤,在testCase中添加一个groovy testStep并尝试使用这个脚本:

if( context.expand('${DataSource#packageID}') == null)
   testRunner.gotoStepByName( "Request 1")
else
   testRunner.gotoStepByName( "Request 2")

希望这有帮助,

答案 2 :(得分:1)

条件Goto基于上一次成功测试步骤响应而工作,但它并未考虑dataSource步骤。所以这对你不起作用。

此外,该值很可能不是null,而是空字符串。因此,您需要检查""。但为了安全起见,您可以使用|并检查两者。

解决方案如下所示:

  1. DataSource
  2. Groovy脚本
  3. ...(其他测试步骤,如请求)
  4. DataSource循环(DataSource Step = DataSource,Target Step = Groovy Script)
  5. groovy脚本看起来像这样(为了调试目的添加了日志记录):

    def packageID = context.expand('${DataSource#packageID}')
    
    if(packageID == "" | packageID == null)
    {
        log.info("Empty value found for: " + packageID);
        testRunner.gotoStepByName( "DataSource Loop")
    }
    else
        log.info("Coninue for: " + packageID);