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

def testStepCount= testRunner.testCase.getTestStepCount()

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

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

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

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

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

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

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

${#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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

for ( testCaseResult in runner.results )
{
testCaseName = testCaseResult.getTestCase().name
log.info testCaseName
}

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

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

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

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

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

// How to Iterate nodes in SOAPUI using groovy Script

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

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

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

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

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

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

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

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

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.

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

messageExchange.getTimeTaken()   

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

messageExchange.getEndpoint()

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

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

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})

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

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

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

  and the property values can be obtained by:

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

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

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

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.

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

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

// How to Get Nodes in SOAPUI using groovy Script

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

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)
  }
  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

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

assert messageExchange.timeTaken < 400

最新文章

  1. iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ①)
  2. TOMCAT开放远程调试端口
  3. Struts——(四)异常处理机制
  4. java三大循环:for、while、do...while
  5. mongodb 基本指令学习
  6. Oracle多行记录合并处理
  7. iOS加载HTML, CSS代码
  8. 假面舞会[NOI2008]
  9. makefile学习笔记(一)
  10. C语言--第三周作业
  11. Making every developer more productive with Visual Studio 2019
  12. 待实验的socketserver
  13. java List&lt;Map&lt;String,Object&gt;遍历的方法
  14. centos7-软件安装-jdk1.8
  15. 软件工程实践_结对Task2_ student_department_matching
  16. Identity(五)
  17. tensorflow mnist 给一张手写字辨别
  18. solr入门之搜索建议的几种实现方式和最终选取实现思路
  19. @Repository的作用
  20. iOS-仿支付宝刮刮乐效果

热门文章

  1. Java 8Lambda之方法引用(Method References)
  2. java代码----------实现创建DataInputStream和DataOutputStream进行读写
  3. SQL 函数:树结构指定父节点遍历所有的子节点
  4. Linux的内存管理机制
  5. http的含义
  6. public interface Sampler extends Serializable, TestElement
  7. Linux的setup命令启动服务名称和功能
  8. 第十章 消息驱动的微服务: Spring Cloud Stream
  9. JavaScript Post提交数据并跳转到页面(模拟Form表单提交)
  10. 了解zookeeper