Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
170 views
in Technique[技术] by (71.8m points)

selenium - How to validate SOAP service XML file with given XML using Karate

I'm learning Karate API for executing our SOAP-based web services. For that, I have created two XML files in which, one is, request information and another one is response data.

And then I have created one more file is called webservice.feature file.

When I execute this feature file I'm getting the following information in the Console but I don't understand and also I don't know how to validate that. Please give your suggestions.

webservice.feature File:

Feature: Get Membership Details

Background:
* url 'http://111.111.221.145:2201/Customer/ProxyServices/CustomerSummary_PS?wsdl'

Scenario: FunctionalTest
   Given request read('getMbrWksMembershipSummaryRequest.xml')

   And header Content-Type = 'application/soap+xml; charset=utf-8'
   When method post
   Then status 200
   And match response customerSummary/address/city == read('getMbrWksMembershipSummaryResponse.xml')
   And print 'response: ', response

Request File.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://www.abcdedf.com/services/customersummary" xmlns:con="http://www.abcdedf.com/services/customersummary/contract">
   <soapenv:Header/>
   <soapenv:Body>
      <cus:getMbrWksMembershipDetails>
         <!--Optional:-->
         <cus:WksMembershipSummaryRequest>
            <!--Optional:-->
            <channel>CC</channel>
            <!--Optional:-->
            <consumerName>GUIDE_PORTAL</consumerName>
            <level>0</level>
            <!--Optional:-->
            <locale>en_US</locale>
            <!--Optional:-->
            <productType>ExtraVacation</productType>
            <!--Optional:-->
            <requestId/>
            <!--Optional:-->
            <sessionId/>
            <!--Optional:-->
            <con:memberID>C05506493</con:memberID>
         </cus:WksMembershipSummaryRequest>
      </cus:getMbrWksMembershipDetails>
   </soapenv:Body>
</soapenv:Envelope>

Response File:

<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>

Console Output:

You can implement missing steps with the snippets below:

@Given("^url 'http://(\d+)\.(\d+)\.(\d+)\.(\d+):(\d+)/Customer/ProxyServices/CustomerSummary_PS\?wsdl'$")
public void url_http_Customer_ProxyServices_CustomerSummary_PS_wsdl(int arg1, int arg2, int arg3, int arg4, int arg5) throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

@Given("^request read\('getMbrWksMembershipSummaryRequest\.xml'\)$")...

Thanks

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The error message seems to be a standard Cucumber error not Karate. It looks like your project structure itself is wrong. I suggest you follow the instructions as per the documentation: Quickstart. Run the following command:

mvn archetype:generate -DarchetypeGroupId=com.intuit.karate -DarchetypeArtifactId=karate-archetype -DarchetypeVersion=0.6.2 -DgroupId=com.mycompany -DartifactId=myproject

Then next to users.feature create this feature file: soap.feature. You can change the url to 'http://www.dneonline.com/calculator.asmx' as mentioned. Now if you right-click and run UsersRunner.java as a JUnit test, you should see things working.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...