如何在空闲框架的帮助下将响应导出到文件中或验证标记值

问题描述 投票:2回答:1

我正在使用以下功能文件,它会生成响应。我们如何将响应存储到XML文件中而不是显示控制台?

专题文件:

Feature: Test soap end point

    Background:
    * url 'sample url'

    Scenario: SmokeTest
       Given request read('getMbrWksMembershipDetails.xml')
       When soap action 'test url' 
       Then status 200
       And print response 

编辑:我得到的回应是这样的。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns1:getMbrWksMembershipDetailsResponse xmlns:ns1="xxxxxxxxxx">
         <ns4:WksMembershipSummaryResponse xmlns:ns2="xxxxxxxx" xmlns:ns3="xxxxxxxxxx" xmlns:ns4="xxxxxxxxxx">
            <ns2:customerSummary>
               <ns2:address>
                  <ns2:city>SOUTH CHESTERFIELD</ns2:city>
                  <ns2:country>USA</ns2:country>
                  <ns2:isoCountryCode>US</ns2:isoCountryCode>
                  <ns2:line1>9998, N. MICHIGAN ROAD.</ns2:line1>
                  <ns2:postalCode>23834</ns2:postalCode>
                  <ns2:state>VA</ns2:state>
               </ns2:address>
               <ns2:allowPasswordChange>true</ns2:allowPasswordChange>
               <ns2:arpMember>false</ns2:arpMember>
               <ns2:brandCode>ABC</ns2:brandCode>
               <ns2:brandId>1</ns2:brandId>
               <ns2:companyCode>ABC</ns2:companyCode>
               <ns2:eliteMemberRewardStatus>false</ns2:eliteMemberRewardStatus>.....

问题:如何验证此响应中的标记值?

谢谢,

selenium automation web-api-testing karate
1个回答
0
投票

首先是一个问题 - 你为什么要这样做?空手道是一个测试框架,除了能够在响应上运行断言之外,您还可以在下一个请求中轻松地重用响应(或响应中的某些数据)。无需将任何内容保存到文件中。

如果您按照logging上的空手道文档中的说明操作,您还会看到响应记录到文件target/karate.log

当您使用JUnit运行器时,您将在HTML report中看到所有响应。

parallel runner相同的情况。

无论如何,即使在你真的想要保存对文件的响应之后,使用Java interop并编写自己的实用程序来保存到文件,它只是几行代码。由于上述原因,它不是空手道内置的。

编辑:好吧,在上面的所有输入后,结果你只是想知道如何验证(断言/匹配)响应?太棒了,这是空手道的全部卖点。

我假设你已经阅读了Karate documentation。另请参考这个例子:soap.xml和这个更多的想法:xml.feature

无论如何,这里有一些基于您的XML示例的提示,以帮助您入门。您可以将下面的内容粘贴到Scenario:中并运行它而无需发出HTTP请求,这样就可以测试并适应match

* def response = 
"""
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns1:getMbrWksMembershipDetailsResponse xmlns:ns1="xxxxxxxxxx">
         <ns4:WksMembershipSummaryResponse xmlns:ns2="xxxxxxxx" xmlns:ns3="xxxxxxxxxx" xmlns:ns4="xxxxxxxxxx">
            <ns2:customerSummary>
               <ns2:address>
                  <ns2:city>SOUTH CHESTERFIELD</ns2:city>
                  <ns2:country>USA</ns2:country>
                  <ns2:isoCountryCode>US</ns2:isoCountryCode>
                  <ns2:line1>9998, N. MICHIGAN ROAD.</ns2:line1>
                  <ns2:postalCode>23834</ns2:postalCode>
                  <ns2:state>VA</ns2:state>
               </ns2:address>
            </ns2:customerSummary>
        </ns4:WksMembershipSummaryResponse>
    </ns1:getMbrWksMembershipDetailsResponse>
  </soap:Body>
</soap:Envelope>
"""
* match //address/city == 'SOUTH CHESTERFIELD'

* match //customerSummary/address == 
    """
    <ns2:address>
       <ns2:city>SOUTH CHESTERFIELD</ns2:city>
       <ns2:country>USA</ns2:country>
       <ns2:isoCountryCode>US</ns2:isoCountryCode>
       <ns2:line1>9998, N. MICHIGAN ROAD.</ns2:line1>
       <ns2:postalCode>23834</ns2:postalCode>
       <ns2:state>VA</ns2:state>
    </ns2:address>
    """
© www.soinside.com 2019 - 2024. All rights reserved.