Hi,
I have created a new SOAP web service test object with a couple of variables:
<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:ondd=“http://ondd.be:DataSourcing:General”>
<CreationDateTime>${CreationDate}</CreationDateTime>
<SenderParty>
<InternalID>KATALON</InternalID>
</SenderParty>
<ondd:OfficialNumbersByCountryGetQuery>
<country>${Country}</country>
</ondd:OfficialNumbersByCountryGetQuery>
</soapenv:Body>
</soapenv:Envelope>
The variables are declared below:
the verification code:
RequestObject request = WSResponseManager.getInstance().getCurrentRequest()
ResponseObject response = WSResponseManager.getInstance().getCurrentResponse()
println(request.getSoapBody().toString())
println(response.getResponseText())
WS.verifyResponseStatusCode(response, 200)
assertThat(response.getStatusCode()).isEqualTo(200)
def variables = request.getVariables()
def variable0 = variables.get(‘Country’)
println(variable0.toString())
def variable1 = variables.get(‘Output1’)
println(variable1.toString())
def variable2 = variables.get(‘Output2’)
println(variable2.toString())
def variable3 = variables.get(‘CreationDate’)
println(variable3.toString())
assertThat(response.getResponseText()).contains(variable1.toString())
assertThat(response.getResponseText()).contains(variable2.toString())
So far so good, this works well when executing the Test Request And Verify.
Next step is to use the web service object in a Test Case and pass data from it as parameters:
I created a new test case:
with same variables but different values:
Script code looks like:
WS.sendRequestAndVerify(findTestObject(‘SOAP/GetOfficialNumbersByCountry’, [(‘Country’) : Country, (‘Output1’) : Output1, (‘Output2’) : Output2 , (‘CreationDate’) : CreationDate]))
When running the test case I see:
11-15-2018 03:42:12 PM - [START] - Start Test Case : Test Cases/GetOfficialNumbers Test Case
11-15-2018 03:42:12 PM - [INFO] - Evaluating variables for test case
11-15-2018 03:42:12 PM - [INFO] - Variable ‘Country’ is set to FR as default
11-15-2018 03:42:12 PM - [INFO] - Variable ‘Output1’ is set to FR0 as default
11-15-2018 03:42:12 PM - [INFO] - Variable ‘Output2’ is set to FR1 as default
11-15-2018 03:42:12 PM - [INFO] - Variable ‘CreationDate’ is set to 2018-11-15T12:12:12Z as default
11-15-2018 03:42:12 PM - [START] - Start action : sendRequestAndVerify
11-15-2018 03:42:12 PM - [INFO] - Finding Test Object with id ‘Object Repository/SOAP/GetOfficialNumbersByCountry’
11-15-2018 03:42:12 PM - [INFO] - Checking request object
11-15-2018 03:42:13 PM - [INFO] - Start verifying response
11-15-2018 03:42:13 PM - [START] - Start Test Case : Verification
11-15-2018 03:42:13 PM - [START] - Start action : Statement - request = com.kms.katalon.core.webservice.verification.WSResponseManager.getInstance().getCurrentRequest()
11-15-2018 03:42:13 PM - [END] - End action : Statement - request = com.kms.katalon.core.webservice.verification.WSResponseManager.getInstance().getCurrentRequest()
11-15-2018 03:42:13 PM - [START] - Start action : Statement - response = com.kms.katalon.core.webservice.verification.WSResponseManager.getInstance().getCurrentResponse()
11-15-2018 03:42:13 PM - [END] - End action : Statement - response = com.kms.katalon.core.webservice.verification.WSResponseManager.getInstance().getCurrentResponse()
11-15-2018 03:42:13 PM - [START] - Start action : Statement - println(request.getSoapBody().toString())
<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:ondd=“http://ondd.be:DataSourcing:General”>
<CreationDateTime>2018-11-15T12:00:00Z</CreationDateTime>
<SenderParty>
<InternalID>KATALON</InternalID>
</SenderParty>
<ondd:OfficialNumbersByCountryGetQuery>
<country>BE</country>
</ondd:OfficialNumbersByCountryGetQuery>
</soapenv:Body>
</soapenv:Envelope>
11-15-2018 03:42:13 PM - [END] - End action : Statement - println(request.getSoapBody().toString())
11-15-2018 03:42:13 PM - [START] - Start action : Statement - println(response.getResponseText())
<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/”>SOAP-ENV:Header/SOAP-ENV:Body<ns3:OfficialNumbersByCountryGetResponse xmlns:ns3=“http://ondd.be:DataSourcing:General”/></SOAP-ENV:Body></SOAP-ENV:Envelope>
11-15-2018 03:42:13 PM - [END] - End action : Statement - println(response.getResponseText())
11-15-2018 03:42:13 PM - [START] - Start action : verifyResponseStatusCode
11-15-2018 03:42:13 PM - [INFO] - Checking response object
11-15-2018 03:42:13 PM - [PASSED] - Verify response status code successfully
11-15-2018 03:42:13 PM - [END] - End action : verifyResponseStatusCode
11-15-2018 03:42:13 PM - [START] - Start action : Statement - org.assertj.core.api.Assertions.assertThat(response.getStatusCode()).isEqualTo(200)
11-15-2018 03:42:13 PM - [END] - End action : Statement - org.assertj.core.api.Assertions.assertThat(response.getStatusCode()).isEqualTo(200)
11-15-2018 03:42:13 PM - [START] - Start action : Statement - variables = request.getVariables()
11-15-2018 03:42:13 PM - [END] - End action : Statement - variables = request.getVariables()
11-15-2018 03:42:13 PM - [START] - Start action : Statement - variable0 = variables.get(“Country”)
11-15-2018 03:42:13 PM - [END] - End action : Statement - variable0 = variables.get(“Country”)
11-15-2018 03:42:13 PM - [START] - Start action : Statement - println(variable0.toString())
BE
11-15-2018 03:42:13 PM - [END] - End action : Statement - println(variable0.toString())
11-15-2018 03:42:13 PM - [START] - Start action : Statement - variable1 = variables.get(“Output1”)
11-15-2018 03:42:13 PM - [END] - End action : Statement - variable1 = variables.get(“Output1”)
11-15-2018 03:42:13 PM - [START] - Start action : Statement - println(variable1.toString())
BE0
11-15-2018 03:42:13 PM - [END] - End action : Statement - println(variable1.toString())
11-15-2018 03:42:13 PM - [START] - Start action : Statement - variable2 = variables.get(“Output2”)
11-15-2018 03:42:13 PM - [END] - End action : Statement - variable2 = variables.get(“Output2”)
11-15-2018 03:42:13 PM - [START] - Start action : Statement - println(variable2.toString())
BE1
11-15-2018 03:42:13 PM - [END] - End action : Statement - println(variable2.toString())
11-15-2018 03:42:13 PM - [START] - Start action : Statement - variable3 = variables.get(“CreationDate”)
11-15-2018 03:42:13 PM - [END] - End action : Statement - variable3 = variables.get(“CreationDate”)
11-15-2018 03:42:13 PM - [START] - Start action : Statement - println(variable3.toString())
2018-11-15T12:00:00Z
11-15-2018 03:42:13 PM - [END] - End action : Statement - println(variable3.toString())
11-15-2018 03:42:13 PM - [START] - Start action : Statement - org.assertj.core.api.Assertions.assertThat(response.getResponseText()).contains(variable1.toString())
11-15-2018 03:42:13 PM - [END] - End action : Statement - org.assertj.core.api.Assertions.assertThat(response.getResponseText()).contains(variable1.toString())
11-15-2018 03:42:13 PM - [FAILED] - Verification FAILED because (of) (Stack trace: java.lang.AssertionError:
Expecting:
<“<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/”>SOAP-ENV:Header/SOAP-ENV:Body<ns3:OfficialNumbersByCountryGetResponse xmlns:ns3=“http://ondd.be:DataSourcing:General”/></SOAP-ENV:Body></SOAP-ENV:Envelope>”>
to contain:
<“BE0”>
at sun.
From this I conclude that variable values passed from Test Case are not used in the web service object! From the logs on my server it seems that the first variable (Country) does get trough (even if from the logging it seems it does not) while all other variables are still using the default set on the web object.
Am I doing something wrong? It looks to me like a major bug in Katalon Studio!
Thanks for your help!
Screenshot 2018-11-15 at 15.33.06.png