[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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现