Through a groovy teststep in soapUI i want all request and response files to be stored in a local directory with system date.
The groovy teststep in soapUI:
def name = context.expand( '${Input#TG}' )
def locatie = context.expand( '${#TestCase#locatie}' )
def createFolder() {
date = new Date()
dateFormat = new java.text.SimpleDateFormat('ddMMyyyy')
shortDate = dateFormat.format(date)
outputFolder = locatie+shortDate
createFolder = new File(outputFolder)
createFolder.mkdir()
}
def getResponseFilename(name) {
respFilename = createFolder()+"_"+name+"_response.xml"
}
def getRequestFilename(locatie,name) {
reqFilename = createFolder()+"_"+ name+"_request.xml"
}
def file = new PrintWriter (getResponseFilename(name))
def response = testRunner.testCase.testSteps
["CheckAdres"].testRequest.response.contentAsString
file.println(response)
file.flush()
file.close()
def file2 = new PrintWriter (getRequestFilename(name))
def request = context.expand('${CheckAdres#Request}')
file2.println(request)
file2.flush()
file2.close()
I get the following error:
Tue Jun 14 12:47:24 CEST 2011:**ERROR:groovy.lang.MissingPropertyException: No such property: locatie for class: Script78**
groovy.lang.MissingPropertyException: No such property: locatie for class: Script78
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:49)
at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:241)
at Script78.createFolder(Script78.groovy:8)
at Script78$createFolder.callCurrent(Unknown Source)
at Script78.getResponseFilename(Script78.groovy:14)
at Script78$getResponseFilename.callCurrent(Unknown Source)
at Script78.run(Script78.groovy:21)
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:93)
at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SourceFile:51)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:148)
at com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel$RunAction$1.run(GroovyScriptStepDesktopPanel.java:274)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Saving Responses in SoapUI Select the request you want to store responses from. In the "Request Properties" panel window scroll down to the property "Dump File", and enter a path for "Dump File". In the name, you could leverage Property Expansion to make the name or path dynamic.
SoapUI is intended for testing; if you want to save your test results, you'll have to do that explicitly. To save a specific response message, use the context menu of the response editor, (or press Ctrl+S), and save it to file. You can load it back if you want, using the same context menu (or press Ctrl+L).
Click the 'RAW' Tab in SOAP-UI Response Window to understand how the response is sent via HTTP. After processing the request, the http response code (200) is shown which means it is a success. The web-server has processed it successfully.
There are several ways of doing this. One would be creating a Groovy test step with the following script:
def myOutFile = "C:/Temp/MyOutDir/response.xml"
def response = context.expand( '${MyTestRequest#Response}' )
def f = new File(myOutFile)
f.write(response, "UTF-8")
Try to use SoapUI
's tools to select the value of whatever you want.
Right click on the groovy
editing area, choose Get Data
--> your test suite --> your test case --> your test step --> response
. This will get you the entire response. You can also dive deeper into the response
with this method.
There is a shorter syntax. Logic is similar what @robert Shared
def response=context.expand('${TestRequest#RawRequest}')
new File("c:/testpath/input.xml").write(response)
if you want to reduce it to just one line
new File("c:/testpath/input.xml").write(context.expand('${TestRequest#RawRequest}')
You can replace RawRequest with whatever you want to save
Request or Response
RawRequest is used when you want data replacing the variables used in request
Check out the answer by McDonald. Best way to save and shoot request.
http://www.loadui.org/forum/viewtopic.php?f=5&t=16354#p38935
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With