Forum Discussion

vissie1983's avatar
vissie1983
New Contributor
7 years ago

Validate assertion with XPath field null

Hi all.

I am new with soap so please bear with me.

in the pro-version I created and assetion to match  "content" from a Datasource.

It match 100% if there are any details in the field. but when the api returns nothing "No phone number exist" then my test fails.

 

When I compare my results the datasource contains "Null" and the API returns Blank. which fails my assertion when it reads that line.

What regex can I write to ignore it when it is "blank"/"Empty" ?

Please see my screenshot :

The expath expression is as follow:

declare namespace typ='http://wowweb.miway.co.za/types/';
//typ:getLeadsResponseElement[1]/typ:result[1]/typ:leads[1]/typ:array[1]/typ:contactNumber[1]/text()

 

 Expected results:

${DataSource#PHONE_NO}

 

 

  • i have similar issue but with JDBC and i got my Groovy script to work.  this is what i have so far. below is link to my post

     

    https://community.smartbear.com/t5/SoapUI-Pro/Compare-EMPTY-TAGS-in-JDBC-response-to-NULL-in-DataSource-as/m-p/174135/thread-id/39693

     

     This groovy works. try it..

     

    def ActualSourceCode = context.expand( '${ABC_XYZ#ResponseAsXml#//Results[1]/ResultSet[1]/Row[1]/SOURCE_CODE[1]}' )
    log.info "JDBCSourceCode= $ActualSourceCode"


    def ExpectedSourceCode = context.expand( '${DataSource#SourceCode1}' )
    log.info "EXCELSourceCode= $ExpectedSourceCode"


    if(ActualSourceCode == 'NOVALUE')
    {

    ExpectedSourceCode = 'NOVALUE'
    assert ExpectedSourceCode == ActualSourceCode
    log.info "SourceCodeNotEntered = $ActualSourceCode"
    }
    else
    {
    assert ExpectedSourceCode == ActualSourceCode
    log.info "SourceCodeEntered = $ActualSourceCode"
    }

  • SiKing's avatar
    SiKing
    Community Expert

    "Blank" and "Null" are not the same, so if you try to compare those the validation will fail.

     

    A workaround is to concatenate these with some "keyword"; any keyword will do. So your XPath expression (slightly optimized) will be:

    concat(//*:result/*:leads/*:array/*:contactNumber, "keyword")

    And your expected result will be:

    ${DataSource#PHONE_NO}keyword
    • Aplis's avatar
      Aplis
      New Contributor

      i have similar issue but with JDBC and i got my Groovy script to work.  this is what i have so far. below is link to my post

       

      https://community.smartbear.com/t5/SoapUI-Pro/Compare-EMPTY-TAGS-in-JDBC-response-to-NULL-in-DataSource-as/m-p/174135/thread-id/39693

       

       This groovy works. try it..

       

      def ActualSourceCode = context.expand( '${ABC_XYZ#ResponseAsXml#//Results[1]/ResultSet[1]/Row[1]/SOURCE_CODE[1]}' )
      log.info "JDBCSourceCode= $ActualSourceCode"


      def ExpectedSourceCode = context.expand( '${DataSource#SourceCode1}' )
      log.info "EXCELSourceCode= $ExpectedSourceCode"


      if(ActualSourceCode == 'NOVALUE')
      {

      ExpectedSourceCode = 'NOVALUE'
      assert ExpectedSourceCode == ActualSourceCode
      log.info "SourceCodeNotEntered = $ActualSourceCode"
      }
      else
      {
      assert ExpectedSourceCode == ActualSourceCode
      log.info "SourceCodeEntered = $ActualSourceCode"
      }

      • Olga_T's avatar
        Olga_T
        SmartBear Alumni (Retired)

        Hi all,

         

        Thanks everyone who participated in the discussion, your help is much appreciated!

        vissie1983 have you had a chance to try any of the suggestions above?
        If your question is answered, do you mind clicking the Accept as Solution button below the reply that helped you? This way, other users will be able to easily find the solution in the future. 
        Otherwise, do you have any additional information for us to consider?

         

        We are looking forward to your reply,