空手道 - 如何将 XML 响应保存为 XML 以备后用?

Karate - How do I save XML response as XML to be used later?

我正在发送一个请求,希望 returns 在 XML 中得到响应。 当响应第一次返回时,我可以从 XML 中提取值,如下例所示。

* def balanceAmount = $response/Envelope/Body/balanceAmount/amount
And print balanceAmount

但是我随后发送了另一个请求,因此上面的响应被覆盖 - 所以我需要将其保存为 XML - 这样我可以在稍后的测试中调用这些值。

我已经尝试了很多方法,包括以下方法:

* def xmlResponse = $response
* def xmlResponse = response
* xml xmlResponse = $response
* xml xmlResponse = response

但我无法再像之前那样访问 XML 响应中的值。

我试过这些:

* def balanceAmount = xmlResponse/Envelope/Body/balanceAmount/amount
And print balanceAmount

* def balanceAmount = $xmlResponse/Envelope/Body/balanceAmount/amount
And print balanceAmount

None以上作品

那么我如何才能将 xml 响应保存为 xml 以便我可以在稍后发送不同请求后的测试中从中提取值?

它对我来说很好用,试试这个 stand-alone 功能:

Feature:

  Scenario:
    * url 'https://httpbin.org/xml'
    * method get
    * def firstResponse = response

    * url 'https://httpbin.org/get'
    * method get

    * match firstResponse ==
    """
    <slideshow
        title="Sample Slide Show"
        date="Date of publication"
        author="Yours Truly">
        <slide type="all">
          <title>Wake up to WonderWidgets!</title>
        </slide>
        <slide type="all">
            <title>Overview</title>
            <item>Why <em>WonderWidgets</em> are great</item>
            <item/>
            <item>Who <em>buys</em> WonderWidgets</item>
        </slide>
    </slideshow>
    """
    * def firstSlide = $firstResponse/slideshow/slide[1]
    * match firstSlide == <slide type="all"><title>Wake up to WonderWidgets!</title></slide>

如果您仍然卡住,请按照以下过程操作:https://github.com/karatelabs/karate/wiki/How-to-Submit-an-Issue