Basics of Groovy Script
1. To Print in the console
log.info(“Print Groovy”)
OutPut :- Print Groovy
2. To get Test Case Name
Type 1 - log.info(testRunner.testCase.name)
Type 2 - log.info(context.getTestCase().name)
Type 3 - log.info(context.testCase.name)
OutPut :- Test Case 1
3. To get Test Suite Name
Type 1 - log.info(context.testCase.testSuite.name)
Type 2 -log.info(context.getTestCase().getTestSuite().name)
Type 3 - log.info(testRunner.testCase.testSuite.name)
OutPut :- Test Suite 1
4. To get Project Name
Type 1 - log.info(context.testCase.project.name)
Type 2 -log.info(context.testCase.testSuite.project.name)
Type 3 -log.info(context.getTestCase().getProject().name)
Type 4 -log.info(context.getTestCase().getTestSuite().getProject().name)
Type 5 - log.info(testRunner.testCase.project.name)
Type 6 -log.info(testRunner.getTestCase().getProject().name)
Type 7 -log.info(testRunner.testCase.testSuite.project.name)
Type 8 -log.info(testRunner.getTestCase().getTestSuite().getProject().name)
OutPut :- tempconvert (P.S. Same output for all above query)
5. To get Test Case Count and Test Case Name
def testCases = context.testCase.testSuite.getTestCaseList()
log.info("Number Test Cases Present :- "+testCases.size())
www.pavanonlinetrainings.com
testCases.each {
log.info("Test Cases Name :- "+it.name)
}
OutPut :- Number Test Cases Present :- 2
Test Cases Name :- TestCase 1
Test Cases Name :- TestCase 2
6. To get Test Suite Count and Test Suite Name
def testSuites = context.testCase.project.getTestSuiteList()
log.info("Number Test Suites Present :- "+testSuites.size())
testSuites.each {
log.info("Test Suite Name :- "+it.name)
}
OutPut :- Number Test Suites Present :- 2
Test Suite Name :- TestSuite 1
Test Suite Name :- TestSuite 2
7. To get Project Count and Project Name
def getProjectsList =
testRunner.testCase.testSuite.project.workspace.getProjectList()
log.info("Number of Projects :- " +getProjectsList.size)
for(i in 0..getProjectsList.size-1 ){
log.info("Project name :- "+getProjectsList.getAt(i).name)
}
OutPut :- Number of Projects :- 5
Project name :- Project1
Project name :- Project2
Project name :- Project3
Project name :- Project4
Project name :- Project5
8. To get count of blank spaces
www.pavanonlinetrainings.com
def val = "Groovy Scripting Language is used for SOAPUI"
def sval = val.replaceAll(" ","")
def sCount = val.size() - sval.size()
log.info("Count of Blank (' ') spaces is = $sCount")
OutPut :- Count of Blank(‘ ‘) spaces is = 6
9. To get count of SAME Char repeated
def val = "Groovy"
def sval = val.replaceAll("o","")
def sCount = val.size() - sval.size()
log.info("The Char 'o' Repeats = $sCount Times")
OutPut :- The Char 'o' Repeats = 2 Times
10. To set project property values
testRunner.testCase.testSuite.project.setPropertyValue("ProjectProp","
ProjectProp Value")
context.getTestCase().getTestSuite().getProject().setPropertyValue("ProjectProp
", " ProjectProp Value")
11. To get project property values
def projPropValue =
testRunner.testCase.testSuite.project.getPropertyValue("ProjectProp")
log.info(projPropValue)
def projPropValue1 =
context.getTestCase().getTestSuite().getProject().getPropertyValue("ProjectProp")
log.info(projPropValue1)
OutPut :- ProjectProp Value 1
ProjectProp Value 2
www.pavanonlinetrainings.com
12. To set TestSuite property values
testRunner.testCase.testSuite.setPropertyValue("TestSuiteProp","TestSuite Property
Value")
context.getTestCase().getTestSuite().setPropertyValue("TestSuiteProp","TestSuite
Property Value")
13. To get TestSuite property values
def testSuitePropValue =
testRunner.testCase.testSuite.getPropertyValue("TestSuiteProp")
log.info(testSuitePropValue)
def testSuitePropValue1 =
context.getTestCase().getTestSuite().getPropertyValue("TestSuiteProp")
log.info(testSuitePropValue)
OutPut :- TestSuite Property Value
TestSuite Property Value
14. To set TestCase property values
testRunner.testCase.setPropertyValue("TestCaseProp", "TestCase Property Value")
context.getTestCase().setPropertyValue("TestCaseProp", "TestCase Property
Value")
15. To get TestCase property values
def testCasePropValue =
testRunner.testCase.getPropertyValue("TestCaseProp")
log.info(testCasePropValue)
def testCasePropValue2 =
context.getTestCase().getPropertyValue("TestCaseProp")
log.info(testCasePropValue2)
www.pavanonlinetrainings.com
OutPut :- TestCase Property Value
TestCase Property Value
******************* Sample Request XML **************************
Note :- Here I have taken sample request xml from “SendSMSToIndia” service
(http://www.webservicex.net/SendSMS.asmx)
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://www.webserviceX.NET">
<soapenv:Header/>
<soapenv:Body>
<web:SendSMSToIndia>
<web:MobileNumber>9879879785465</web:MobileNumber>
<web:FromEmailAddress>mail@email.com</web:FromEmailAddress>
<web:Message>Hi Hello!!!!!</web:Message>
</web:SendSMSToIndia>
</soapenv:Body>
</soapenv:Envelope>
******************************************************************
******
16. To get Request Content
def groovyUtils = new
com.eviware.soapui.support.GroovyUtils(context)
def reqHolder = groovyUtils.getXmlHolder("OperationName#Request")
reqHolder holds all the request XML content.
Note :- “reqHolder” we will use same variable in our next scripts.
17. To get or Read request XML tag/Element value
Consider above sample request xml, in that we have three fields 1. MobileNumber,
2. FormEmailAddress and 3. Message.
To get value from each filed use below code.
Syntax :- holder.getNodevalue(“XPATH of xml element name”)
log.info(reqHolder.getNodeValue(“//*:MobileNumber”))
www.pavanonlinetrainings.com
log.info(reqHolder.getNodeValue(“//*:FromEmailAddress”))
log.info(reqHolder.getNodeValue(“//*:Message”))
OutPut :- 9879879785465
mail@email.com
Hi Hello!!!!!
18. To Set values to Request XML tag/element
Syntax :- holder.setNodevalue(“XPATH of xml element name”,”String value”)
reqHolder.setNodeValue(“//*:MobileNumber”, ”2487987646”)
reqHolder.setNodeValue(“//*:FromEmailAddress”, ”email@mailer.com”)
reqHolder.setNodeValue(“//*:Message”, ”Hello World”)
reqHolder.updateProperty () // this line of code will save the request
xml.
19. To Get count of xml tag/element
Syntax :- holder[Count(“xml element xpath”)]
log.info(reqHolder["count(//*:MobileNumber)"])
log.info(reqHolder["count(//*:FromEmailAddress)"])
log.info(reqHolder["count(//*:Message)"])
OutPut :- 1
1
1
20. Reading response
******************* Sample Response XML *************************
Note :- Here I have taken sample response xml from “SendSMSToIndia” service
(http://www.webservicex.net/SendSMS.asmx)
www.pavanonlinetrainings.com
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<SendSMSToIndiaResponse xmlns="http://www.webserviceX.NET">
<SendSMSToIndiaResult>
<FromEmailAddress>mail@gmail.com</FromEmailAddress>
<MobileNumber>9879879785465</MobileNumber>
<Provider>Not Covered</Provider>
<State>Not Covered</State>
<Status>Not Covered</Status>
</SendSMSToIndiaResult>
</SendSMSToIndiaResponse>
</soap:Body>
</soap:Envelope>****************************************************
*****
Note :- Here we will use same groovyutills class object as we are already created
(groovyUtils) object above in at section 16.
def resHolder = groovyUtils.getXmlHolder("OperationName#Response")
resHolder holds all the response XML content.
Note :- “resHolder” we will use same variable in our next scripts.
To read or get value from response xml
Syntax :- holder.getNodevalue(“XPATH of xml element name”)
log.info(resHolder.getNodeValue(“//*:FromEmailAddress”))
log.info(resHolder.getNodeValue(“//*:MobileNumber”))
log.info(resHolder.getNodeValue(“//*:Provider”))
log.info(resHolder.getNodeValue(“//*:State”))
log.info(resHolder.getNodeValue(“//*:Status”))
OutPut :- mail@gmail.com
9879879785465
www.pavanonlinetrainings.com
Not Covered
Not Covered
Not Covered
21. If… else condition.
Syntax :- If(condition){
…….
}
else{
…….
}
If(“Groovy”.equals(“Groovy”)){ if(“Groovy”.equals(“Groovi”)){
log.info(“Pass”) log.info(“Pass”)
}else{ }else{
log.info(“Fail”) log.info(“Fail”)
} }
OutPut :- Pass OutPut :- Fail
If(10==10){ if(5==8){
log.info(“Pass”) log.info(“Pass”)
}else{ }else{
log.info(“Fail”) log.info(“Fail”)
} }
OutPut :- Pass OutPut :- Fail
22. If …. else if…else condition
Syntax :- If(condition){
…….
}
else if{
…….
}
else if{
…….
}
else{
www.pavanonlinetrainings.com
…….
}
If(“Groovy”.equals(“Groovy”)){ If(“Groovy”.equals(“Groov”)){
log.info(“Groovy”) log.info(“Groovy”)
}else if(“SoapUI”.equals(“SoapUI”)){ }else if(“SoapUI”.equals(“Soap”)){
log.info(“SoapUI”) log.info(“SoapUI”)
} }
else{ else{
log.info(“Fail”) log.info(“Condition Not Met”)
} }
OutPut :- Groovy or SoapUI OutPut :- Condition Not Met
If(25==25){ If(25==50){
log.info(25) log.info(25)
}else if(48==48){ }else if(48==84){
log.info(48) log.info(48)
} }
else{ else{
log.info(“Fail”) log.info(“Condition Not Met”)
} }
OutPut :- 25 or 48 OutPut :- Condition Not Met
23. For loop
Syntax :- for(initialization ; condition ; statement){
Statement block
}
for(int i = 1; i<=5;i++){
log.info(i)
}
OutPut :- 1
2
www.pavanonlinetrainings.com
3
4
5
24. How to remove attributes present in XMLtag element
For example:- To configure or set values to element or tag which has ‘nil’
attributes.
Follow the below steps to remove the ‘nil’ attribute from xml tag/element and
provide values to it.
Consider sample request xml tag which ‘nil’ attribute as below,
<sendSMSMessage xsi:nil="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
def sendSMSMessageNode = reqHolder.getDomNode("//*:sendSMSMessage
")
sendSMSMessageNode.attributes.removeNamedItem("xsi:nil")
sendSMSMessageNode.attributes.removeNamedItem("xmlns:xsi")
reqHolder.setNodeValue("//*:sendSMSMessage ", “Hi Hello!!!!!!” )
Here sendSMSMessageNode.attributes.removeNamedItem(“….”) removes attributes
present in xml tag.
www.pavanonlinetrainings.com