[SoapUI] SOAP UI-Groovy Useful Commands

Hi All,

I have posted the SOAPUI and Groovy useful commands that may help you in your testing. Below are the commands collected from various websites and blogs. I have used few of them in my testing and if any commands are wrongly given please comment and I will update the same.

// How  to get the TestStep Count in SOAPUI using groovy Script

1
def testStepCount= testRunner.testCase.getTestStepCount()

// How  to get the TestCase in SOAPUI using groovy Script

1
def tc = testRunner.testCase.testSuite.project.testSuites["Sample Simple TestSuite"].testCases["Simple Login and Logout w. Properties Steps"]

// How  to set  the properties in SOAPUI using groovy Script

1
tc.setPropertyValue("Username", "ole" )

// How to run the test synchrouously in SOAPUI using groovy Script

1
2
3
4
def runner = tc.run( null, false )
testRunner.testCase
testRunner.fail
context.myProperty = "Hello"

// How to Create JDBC Connection in SOAPUI using groovy Script

1
2
3
4
5
6
7
8
9
10
11
def utils =new  com.eviware.soapui.support.GroovyUtilsPro(context);
context.dbConnection= utils.getJdbcConnection(“StoreageDB”)
context.statement= context.dbConnection.createStatement()
def query = “select * from table_name”
def rs = context.statement.executeQuery(query)
while(rs.next()){
// do your program here
}
rs.close()
context.statement.close()
context.statement.close() 

// How to do Property expansion in SOAPUI using groovy Script

1
${#Project#Password}

// Write the response from the "Test Request: login" TestStep to a file

// How to  Get the Current User in SOAPUI using groovy Script

1
def currentUser = context.expand( '${#TestCase#currentUser}' )

// How to Get the Response in SOAPUI using groovy Script

1
def response = context.expand( '${Test Request: login#Response}' )

// How to  Create a New File and write the response in SOAPUI using groovy Script

1
new File( "C:/Users/eviware/" + currentUser + "_response.txt" ).write( response )

// How to Create a New File and write the response with a different Charset in SOAPUI using groovy Script

1
new File( "C:/Users/eviware/" + currentUser + "_response.txt" ).write( response, "UTF-8" )

// How to get username property from TestSuite in SOAPUI using groovy Script

1
def username = testRunner.testCase.testSuite.getPropertyValue( "Username" )

// How to get properties from testSuite and project in SOAPUI using groovy Script

1
2
def testCaseProperty = testRunner.testCase.getPropertyValue( "MyProp" )
def projectProperty = testRunner.testCase.testSuite.project.getPropertyValue( "MyProp" )

// How to get Global  property  in SOAPUI using groovy Script

1
def globalProperty = com.eviware.soapui.SoapUI.globalProperties.getPropertyValue( "MyProp" )

// How to set testCase, testSuite , project and Global  property in SOAPUI using groovy Script

1
2
3
4
testRunner.testCase.setPropertyValue( "MyProp", someValue )
testRunner.testCase.testSuite.setPropertyValue( "MyProp", someValue )
testRunner.testCase.testSuite.project.setPropertyValue( "MyProp", someValue )
com.eviware.soapui.SoapUI.globalProperties.setPropertyValue( "MyProp", someValue )

// How to Get testCase property from Script Assertion in SOAPUI using groovy Script

1
def testCaseProperty = messageExchange.modelItem.testStep.testCase.getPropertyValue( "MyProp" )

// How to Get testCase name from testCaseResult in SOAPUI using groovy Script

1
2
3
4
5
for ( testCaseResult in runner.results )
{
testCaseName = testCaseResult.getTestCase().name
log.info testCaseName
}

// How to Get and Set Settings in SOAPUI using groovy Script

1
2
3
4
5
6
7
import com.eviware.soapui.settings.SSLSettings
import com.eviware.soapui.SoapUI
// set
SoapUI.settings.setString( SSLSettings.KEYSTORE, pathToKeystore )
SoapUI.settings.setString( SSLSettings.KEYSTORE_PASSWORD, keystorePassword )
// get
SoapUI.settings.getString( SSLSettings.KEYSTORE, "value to return if there is no such setting set" )

// How to get Project name in SOAPUI using groovy Script

1
def projectName = testRunner.testCase.testSuite.project.name

// How to Conditional inline property expansion in SOAPUI using groovy Script

1
${= testCase.getPropertyValue( "selection" ) == "first" ? testCase.getPropertyValue( "myFirstXMLSnippet" ) : testCase.getPropertyValue( "mySecondXMLSnippet" )}

// How to Iterate nodes in SOAPUI using groovy Script

1
2
3
4
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder( "Request 1#Response" )
for( item in holder.getNodeValues( "//item" ))
log.info "Item : [$item]"

// How to Register the Jdbc driver in SOAPUI using groovy Script

1
com.eviware.soapui.support.GroovyUtils.registerJdbcDriver( "com.mysql.jdbc.Driver" )

// How to Access Interface, Operation and Request in SOAPUI using groovy Script

1
2
3
4
import com.eviware.soapui.impl.wsdl.WsdlInterface
myInterface = (WsdlInterface) testRunner.testCase.testSuite.project.getInterfaceByName("SampleServiceSoapBinding")
myOperation = myInterface.getOperationByName("login")
myRequest = myOperation.getRequestByName("Request 1")

// How to Log the result messages of all TestSteps in all failing TestCases in SOAPUI using groovy Script

1
2
3
4
5
6
7
8
9
10
11
12
13
for ( testCaseResult in runner.results )
{
testCaseName = testCaseResult.getTestCase().name
log.info testCaseName
if ( testCaseResult.getStatus().toString() == 'FAILED' )
{
log.info "$testCaseName has failed"
for ( testStepResult in testCaseResult.getResults() )
{
testStepResult.messages.each() { msg -> log.info msg }
}
}
}

// How to Create Project Event Handler to Save all TestStep's results into files in SOAPUI using groovy Script

1
2
3
4
5
6
7
Create a Project EventHandler (Project Window > Events tab > Add new EventHandler) of type TestRunListener.afterStep with the following content:
filePath = 'c:/users/henrik/soapUI-results/'
fos = new FileOutputStream( filePath + testStepResult.testStep.label + '.txt', true )
pw = new PrintWriter( fos )
testStepResult.writeTo( pw )
pw.close()
fos.close()

// How to Loop a sequence of TestSteps many times in SOAPUI using groovy Script

1
2
3
4
5
A simple loop is easiest achieved by placing a Groovy Script TestStep after the last TestStep in the loop with the following content:
if( context.loopIndex == null )
context.loopIndex = 0
if( ++context.loopIndex < 10 )
testRunner.gotoStepByName( "Name of first TestStep in loop" )

// How to Update a Property to update a Request in SOAPUI using groovy Script

1
2
3
4
5
6
7
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
// get XmlHolder for request message def
holder = groovyUtils.getXmlHolder( "login#Request" )
// change password using XPath
holder["//username"] = "test"
// write updated request back to teststep
holder.updateProperty()

// How to Get the Response Content and Change the content in SOAPUI using groovy Script

1
2
3
4
5
6
7
8
if( request.response == null )
return
// get response content
def content = context.httpResponse.responseContent
// manipulate content
content = content.replaceAll( "555", "444" )
// write it back
context.httpResponse.responseContent = content

Reference: http://www.soapui.org/Scripting-Properties/tips-a-tricks.htm

// How to Get the handle for current Testcase/TestSuite/Project using context/testRunner in SOAPUI using groovy Script

            Below command will be useful to get the handle of current Test case or Test suite.

1
2
3
4
5
6
7
8
9
10
Context.testCase
testRunner.testCase
def project = context.testCase.testSuite.project
def project = testRunner.testCase.testSuite.project
def myTestSuite = project.getTestSuiteAt(IndexNumber)
def myTestSuite = project.getTestSuiteByName(“Name of the TestSuite”)
def myTestCase = myTestSuite.getTestCaseAt(IndexNumber)
def myTestCase = myTestSuite.getTestCaseByName(“Name of the TestCase”)
def myTestStep = myTestCase.getTestStepAt(IndexNumber)
def myTestStep = myTestCase.getTestStepByName(“Name of the TestStep”)

// How to Get Time taken to process the Request/Response in SOAPUI using groovy Script

1
messageExchange.getTimeTaken()

// How to Get the End Point in SOAPUI using groovy Script

1
messageExchange.getEndpoint()

// How to Run the SOAPUI Request in SOAPUI using groovy Script

1
2
3
testRunner = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner(testCase, null);
testStepContext = new com.eviware.soapui.impl.wsdl.testcase.WsdlTestRunContext(testStep);
testStep.run(testRunner, testStepContext);

// How to  get theRawRequest & RawResponse in SOAPUI using groovy Script

1
2
messageExchange.getRequestContentAsXml.toString()
messageExchange.getResponseContentAsXml.toString()

// How to use closures in SOAPUI using groovy Script

closures are similar to iterators. We mention an array or map of values, and write a closure to iterate over it.

To access the current value in the loop ‘it’ is to be used (but not ${it})

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def  sampleArray = [“dev”, “integration”, “qa”, “prod”];
def a = 1;
sampleArray.each() {
log.info(a + ‘:’ + it);
a++;
}
def sampleMap = [ "Su" : "Sunday", "Mo" : "Monday", "Tu" : "Tuesday",
"We" : "Wednesday", "Th" : "Thursday", "Fr" : "Friday",
"Sa" : "Saturday" ];
then use
stringMap.each() {
log.info(it);
log.info( it.key + ‘:’ + it.value );
} 

// How to Access Request/Response using Message Exchange in SOAPUI using groovy Script

1
2
3
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def requsetHolder = groovyUtils.getXmlHolder( messageExchange.requestContent )
def responseHolder = groovyUtils.getXmlHolder( messageExchange.responseContent )

// How to load property files from bin directory in SOAPUI using groovy Script

And this master property file could be placed in %SOAP_UI_HOME%\bin directory of the SOAP UI and can be easily accessed across the Suites

1
2
props = new java.util.Properties();
props.load( new FileInputStream(“testProps.properties”) );

  and the property values can be obtained by:

1
2
props.getProperty(“QA_PROP_LOCATION”);
props.getProperty(“DEV_PROP_LOCATION”);

// How to create sql conection in SOAPUI using groovy Script

1
2
def  sql = Sql.newInstance(dbPath, dbUserName, dbPassword, dbDriverName);
res = sql.execute( “SELECT * FROM TABLE1 WHERE COL1=’123′” );

// How to Get the Project Path in SOAPUI using groovy Script

1
2
def groovyUtils=new  com.eviware.soapui.support.GroovyUtils(context)
def projectPath = groovyUtils.projectPath

// How to Loop the Response Nodes in SOAPUI using groovy Script

If the desired content is namespace qualified (very likely for SOAP responses), you need to define the namespace first.

1
2
3
4
holder.namespaces["ns"] = "http://acme.com/mynamspace"
loop item nodes in response message
for( item in holder.getNodeValues( "//ns:item" ))
log.info "Item : [$item]"

// How to Count nodes in SOAPUI using groovy Script

1
def numberOfLinksInParagraphs = holder["count(//html/body/p/a)"]

// How to Get Nodes in SOAPUI using groovy Script

1
2
3
4
5
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def holder = groovyUtils.getXmlHolder("Properties#response")
log.info holder.getNodeValue("//id")
for( node in holder['//id'] )
log.info node

//How to Add Assertions to test steps in SOAPUI using groovy Script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
TSName = "Test Case Name"
StepName = "Test Step Name"
project.getTestSuiteList().each {
  if(it.name == TSName)
  {
  TS = it.name
   it.getTestCaseList().each {
  TC =it.name
  def asserting = project.getTestSuiteByName(TS).getTestCaseByName(TC).getTestStepByName(StepName).getAssertionByName("XPath Match")
  if (asserting instanceof com.eviware.soapui.impl.wsdl.teststeps.assertions.basic.XPathContainsAssertion)
  {
    project.getTestSuiteByName(TS).getTestCaseByName(TC)getTestStepByName(StepName).removeAssertion(asserting)<br>  }
  def assertion = project.getTestSuiteByName(TS).getTestCaseByName(TC)getTestStepByName(StepName).addAssertion("XPath Match")
  assertion.path = "declare namespace here”
  assertion.expectedContent = "200"         
  }
}
}  

// How  to assert a node value using holder  in SOAPUI using groovy Script

1
2
3
def holder = new XmlHolder( messageExchange.responseContentAsXml )
assert holder["//ns1:RequestId"] != null
def node = holder.getDomNode("//ns1:RequestId”)

// How  to assert a request and response time  value  in SOAPUI using groovy Script

1
assert messageExchange.timeTaken < 400

posted on   张缤分  阅读(2227)  评论(1编辑  收藏  举报

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示