Forum Discussion

yakari's avatar
yakari
New Contributor
9 years ago

XPATH assertion fails with SoapUI NG

Hi together,

 

I want to migrate our projects from SoapUI Pro 5.1.2 to SoapUI NG. Within SoapUI NG the following XPATH assertion fails, which passes within 5.1.2.

 

As result of a REST request I check the returned codes, that have always different order.

 

<codeCategories>
   <codeCategory>A</codeCategory>
   <codeCategory>B</codeCategory>
   <codeCategory>C</codeCategory>
</codeCategories>

 

XPATH Assertion example

Expression

//codeCategories[1]//codeCategory

Expected result

B

 

Returned error

XPathContains comparison failed for path [//codeCategories[1]//codeCategory], expecting [B], actual was [[A,B,C]]

Why does the assertion under SoapUI NG fail with the returned error?

 

Thanks to all

 

  • It's because of a bug fix in Ready! API to be able to match mutliple values returned by an XPath. As you can see your XPath expression returns multiple values but expected value is only one. Please change the XPath expression to : //codeCategories[1]//codeCategory[2] or change the expected value to [A,B,C].

  • PJat's avatar
    PJat
    9 years ago

    Yes, you can use wildcards - so expected value in your case can be '*B*'.

     

    nmrao We should definitely include it in SoapUI OS - I will bring this up with MattiH (SoapUI OS Product Owner).

  • PJat's avatar
    PJat
    Contributor

    It's because of a bug fix in Ready! API to be able to match mutliple values returned by an XPath. As you can see your XPath expression returns multiple values but expected value is only one. Please change the XPath expression to : //codeCategories[1]//codeCategory[2] or change the expected value to [A,B,C].

    • nmrao's avatar
      nmrao
      Champion Level 3
      Very nice to know PJat.

      Just curious to know if this will be part of SoapUI OS as well? Possibly in any upcoming release?
    • yakari's avatar
      yakari
      New Contributor

      Hi,

       

      thanks for the answer. But that does not really solve the problem. The results differ each time and could be [C,A,B] and the next time [B,C,A]. So how should the assertion then be? Is there a possibility to sort the results before the assertion or use wildcards?

       

      Thanks

      yakari

      • PJat's avatar
        PJat
        Contributor

        Yes, you can use wildcards - so expected value in your case can be '*B*'.

         

        nmrao We should definitely include it in SoapUI OS - I will bring this up with MattiH (SoapUI OS Product Owner).

    • gcampan's avatar
      gcampan
      Occasional Contributor

      +1 for this, would be glad when a solution is found

       

      Anonymous team: this aslo happens with the tests being run with Testrunner under Jenkins, FYI