/*
@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.
Hi Pradeep, you have a great deal of hold on the SoapUI APIs. I am trying to get some simple thing from long time. It is as below:
ReplyDeleteIn my testcases, I add a test request step and below it are say 3-4 assertions. After my test request step, I add a groovy script step which validates my request and writes some details to the external excel sheet.
Now, when the test request is run, we see that some of the assertions are passing and some are failing.
All I want is, i need to pass the details of all the failed assertions to my excel sheet.
How can i do this in my groovy script?
Please reply soon. You can send the reply to my mail mallikarjun.melagiri@gmail.com
Thanks in advance!
Please reply soon. It's critical for me!
ReplyDeleteHi Mallikarjun,
ReplyDeleteI haven't worked on such a scenario yet, however will try to implement the same asap.
We can grab the name & status of the each assertion using groovy. So, I am thinking about getting the "failed assertion detail" ...i guess we can fetch it through 'AssertionError' class.
i will give it a try. hope it works ;-)
cheers!
~~ pradeep bishnoi ~~
Hi Pradeep,
ReplyDeleteThanks for your quick reply. I tried the following and was successful halfway:
WsdlTestRequestStep wtrs = testRunner.testCase.getTestStepByName("");
log.info wtrs.getAssertionStatus();
But I think it gives the overall status of the assertions.
But I need status for individual assertion.
Please look into the methods of WsdlTestRequestStep and provide me the solution. Meanwhile, i too will give a try today.
Thanks a lot!
Hi Mallikarjun,
ReplyDeleteLucky you, i shared the solution via new blog post. Do refer the same.
http://pradeepbishnoi.blogspot.com/2011/06/groovy-7-getstatus-geterror-message-of.html
Happy reading & keep sharing!
Regards,
~~ Pradeep Bishnoi ~~
I have an XML, I need to run it with diff set of data 234 times and capture the responses how can i do i, i have the input values for the field in a text file.
ReplyDeletecan u provide code for multiple input values in request and should store response the same way in above code
ReplyDelete