/*
@Title : Gr-ooo-vy Code III
@Description : using text file as Data Source using Groovy code lines
@Author : Pradeep Bishnoi
*/
This is another blog post unleashing the power of Groovy script to perform certain set of task. SoapUI users, who have used the 15 days trail license of SoapUI Pro version, must be missing various important features, after license expiration. Well, in this blog i will try to replicate one of the important feature of Data Source [provided by Pro version] using the Groovy. A lot can be achieved using the Groovy...
Recommendation : I would encourage users to go for soapUI Pro license to avail many more useful features + the support from soapUI support team. Go soapUI Pro!!
Copy and paste the below provided code lines in the TearDown script for the selected TestCase.
import com.eviware.soapui.support.XmlHolder
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def folderName = "D:/Automate/response" //to store the resonse
def createFolder = new File(folderName)
createFolder.mkdir()
def testSuite = testRunner.testCase.testSuite.project.testSuites["My_TestSuite"]
def testCase = testSuite.getTestCaseAt(0)
def testStep1 = testCase.getTestStepCount()
def xHolder = new XmlHolder(testCase.getTestStepAt(0).getProperty("Response").getValue())
File tempFile = new File("D:/data_source_file.txt")
List lines = tempFile.readLines()
def i=0
def temp1 = 0
def inputValue
def myTestStep
def myTestRunner
def myTestStepContext
//Loop through all the names of the test steps.
( 0..<testStep1 ).each
{
i=0
tempFile.eachLine
{
testCase.setPropertyValue("inputValue", lines[i++])
inputValue = context.expand( '${#TestCase#inputValue}' )
myTestStep = testCase.getTestStepAt(temp1)
myTestRunner = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner(myTestCase, null)
myTestStepContext = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext( myTestStep )
myTestStep.run( myTestRunner, myTestStepContext )
xHolder = new XmlHolder(testCase.getTestStepAt(temp1).getProperty("Response").getValue())
f = new File( folderName + '/' + inputValue + '_' + testCase.getTestStepAt(temp1).getName().toString() + '.txt')
f.append("\r\n\r\n\r\n\r\n\r\n")
f.append("#################################################\r\n")
f.append("\t\t\t Response \r\n")
f.append("#################################################\r\n\r\n\r\n\r\n\r\n")
f.write(xHolder.prettyXml)
xHolder.clear()
}
temp1++
}
Updated : Code lines mentioned above are updated after recieving the feedback from the users. There was some problem with HTML tags, so the actual code was not visible. Now it should work.