问题
I have a task to create groovy script which will run REST request and setup property. I setup property by script:
testRunner.testCase.setPropertyValue( "ScriptProFrom", "BIF" )
testRunner.testCase.setPropertyValue( "ScriptProTo", "STD" )
But I can't find how to run REST request. I tried to do it like this:
myInterface = (RestService) testRunner.testCase.testSuite.project.getInterfaceByName("http://www.webservicex.net")
myOperation = myInterface.getOperationByName("ConversionRate")
myRequest = myOperation.getRequestByName("Request 1")
and get "Script-result: com.eviware.soapui.impl.RestRequest@6a80901"
and it cool if it my request, but how to run it?
Please, help...
回答1:
Normally if you have a testStep you can get it and then simply run it, however your are doing it in another way so you can use the submit method of com.eviware.soapui.impl.rest.RestRequest
class. This method has two parameters, the context which is an instance of com.eviware.soapui.model.iface.SubmitContext
interface and a boolean
which indicates if the operation is asynchronous. In your code this could be:
myInterface = testRunner.testCase.testSuite.project.getInterfaceByName("http://www.webservicex.net")
myOperation = myInterface.getOperationByName("ConversionRate")
myRequest = myOperation.getRequestByName("Request 1")
// get the context
def context = testRunner.getRunContext()
// send the request synchronous
myRequest.submit(context,false)
EDIT BASED ON OP COMMENT:
The submit method returns an object which is instance of com.eviware.soapui.impl.wsdl.WsdlSubmit<T>, then you can invoke getResponse()
on this object an get another object which is instance of com.eviware.soapui.model.iface.Response then from this you can use getContentAsString()
to check the response content or getContentType()
to check the content type and so on. Please note that if you invoke submit in asynchronous way you must validate that getStatus()
returns com.eviware.soapui.model.iface.Submit.Status.FINISHED
before getResponse()
. I give you an example:
myInterface = testRunner.testCase.testSuite.project.getInterfaceByName("http://www.webservicex.net")
myOperation = myInterface.getOperationByName("ConversionRate")
myRequest = myOperation.getRequestByName("Request 1")
// get the context
def context = testRunner.getRunContext()
// send the request synchronous
def submitted = myRequest.submit(context,false)
// get the response
def response = submitted.getResponse()
// get the response content as string
def content = response.getContentAsString()
// i.e check that the response contains literal 'OK'
assert content.contains('OK'),"Response not contains OK literal"
Hope this helps,
来源:https://stackoverflow.com/questions/24477885/create-groovy-script-for-run-rest-request