SOAPUI Groovy Scripts: CSV
Groovy Script in SOAPUI allow for reaching out to external data and return reporting elements and data
- Open Flie/DB connection
- Read from CSV
- Re-Name Test Steps from Excel Columns
- Get Values from file for test step(s) values
- Use variables/properties for
- logging
- Renaming Test Cases on-the-fly
- Populating Request Messages
- Populating Response Messages
- Resetting Test Case to default values
- Closing Flies/DB connections
Script Logging
log.info( "NEXT: : " + curTC.getPropertyValue("Symbol") )
log.info( "Test Case TearDown.." )
TestSuite
SetupScript
log.info(runner.getTestSuite().toString()) log.info(runner.toString())
TestCase
Test Case Properties
Test Properties are VARIABLES used in a test case. Access them by #TestCase#VARIABLE
- ElName - Uranium
- AtNum - 92
- Symbol - U
- AtWeight - 238.03
- BoiPoint - 4091
Setup Script
//Create a new filereader object, using the context variable so it can be used between test components
context.fileReader = new BufferedReader(new FileReader("C:\\PerTableData\\TestData.csv"))
//Read in the first line of the data file
firstLine = context.fileReader.readLine()
//Split the first line into a string array and assign the array elements to various test case properties
String[] propData = firstLine.split(",")
testCase.setPropertyValue("ElName",propData[0])
testCase.setPropertyValue("AtNum",propData[1])
testCase.setPropertyValue("Symbol",propData[2])
testCase.setPropertyValue("AtWeight",propData[3])
testCase.setPropertyValue("BoilPoint",propData[4])
//Rename request test steps for readability in the log; append the element name to the test step names
testCase.getTestStepAt(0).setName("GetAtomicNumber-" + propData[0])
testCase.getTestStepAt(1).setName("GetAtomicWeight-" + propData[0])
testCase.getTestStepAt(2).setName("GetElementySymbol-" + propData[0])
TearDown Script
//Cleanup: rename test steps to their generic names and close the file reader
testCase.getTestStepAt(0).setName("GetAtomicNumber")
testCase.getTestStepAt(1).setName("GetAtomicWeight")
testCase.getTestStepAt(2).setName("GetElementSymbol")
context.fileReader.close()
Test Step Request
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webserviceX.NET">
<soapenv:Header/>
<soapenv:Body>
<web:GetAtomicNumber>
<!--Optional:-->
<web:ElementName>${#TestCase#ElName}</web:ElementName>
</web:GetAtomicNumber>
</soapenv:Body>
</soapenv:Envelope>
Test Step Groovy: Read Next Line
Groovy Script
/*Read in the next line of the file
We can use the same fileReader created in the Setup script because it
was assigned to the context variable.*/
nextLine = context.fileReader.readLine()
/*If the end of the file hasn't been reached (nextLine does NOT equal null)
split the line and assign new property values, rename test request steps,
and go back to the first test request step*/
if(nextLine != null){
String[] propData = nextLine.split(",")
curTC = testRunner.testCase
curTC.setPropertyValue("ElName",propData[0])
curTC.setPropertyValue("AtNum",propData[1])
curTC.setPropertyValue("Symbol",propData[2])
curTC.setPropertyValue("AtWeight",propData[3])
curTC.setPropertyValue("BoilPoint",propData[4])
curTC.getTestStepAt(0).setName("GetAtomicNumber-" + propData[0])
curTC.getTestStepAt(1).setName("GetAtomicWeight-" + propData[0])
curTC.getTestStepAt(2).setName("GetElementSymbol-" + propData[0])
testRunner.gotoStep(0)
}
- Log in to post comments
