Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Store request/response files in local directory with Groovy teststep in soapUI

Tags:

groovy

soapui

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)
like image 992
makhlo Avatar asked Jun 14 '11 11:06

makhlo


People also ask

How do you save a response in SoapUI using Groovy?

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.

How do I export a response in SoapUI?

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

How do I get responses in SoapUI?

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.


4 Answers

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")
like image 176
Robert Strauch Avatar answered Oct 17 '22 12:10

Robert Strauch


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.

like image 43
RonK Avatar answered Oct 17 '22 13:10

RonK


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

like image 40
Gaurav Khurana Avatar answered Oct 17 '22 12:10

Gaurav Khurana


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

like image 1
amol-c Avatar answered Oct 17 '22 13:10

amol-c