空手道 - XML 使用正则表达式断言数字

Karate - XML Assertion with regex for a number

对于以下数据,

<Document xmlns="http://www.mycompany.net/xyz/2.2">
    <Placemark>
        <ExtendedData>
            <Data name="Value">
                <value>6.5</value>
            </Data>
            <Data name="Direction">
                <value>77</value>
            </Data>
        </ExtendedData>
        <Point>
            <coordinates>0,-25.2</coordinates>
        </Point>
    </Placemark>
    <Placemark>
        <ExtendedData>
            <Data name="Value">
                <value>7.0</value>
            </Data>
            <Data name="Direction">
                <value>101</value>
            </Data>
        </ExtendedData>
        <Point>
            <coordinates>3.6,-25.2</coordinates>
        </Point>
    </Placemark>
</Document>

我正在尝试验证 XML 中有数字的坐标。我尝试使用正则表达式,但仍然失败

    When def xmld = read('classpath:rough/GriddedElementResponse.xml')
    * match $xmld/Document/Placemark[*]/Point/coordinates == "#[] #string" 
    # Above gets passed as the numbers are inside quotes
    * match $xmld/Document/Placemark[*]/Point/coordinates == "#regex [\d \. \, \-]"

在空手道中因以下错误而失败,但通过了 here

org.opentest4j.AssertionFailedError:
match failed: EQUALS
  $ | not a string (LIST:STRING)
  ["0,-25.2","3.6,-25.2"]
  '#regex [\d \. \, \-]'

您有2个字符串的列表,请注意错误提示。

试试这个:

* match each $xmld/Document/Placemark[*]/Point/coordinates == '#regex \d+(\.\d+)?,-?\d+(\.\d+)'