• [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

    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%in 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
  • 相关阅读:
    [翻译]NUnitString && Collection && File && Directory Assert (七)
    c++删除指定字符串之间的内容(比正则表达式快几十倍)[转]
    C++ 使用正则表达式分割字符串
    c++正则查找
    PHP的XSS攻击过滤函数
    Boost之正则表达式_[转]
    C++中的类所占内存空间总结[转]
    make_shared() shared_prt()详解区别
    C++ STRING 和WSTRING 之间的互相转换函数 和字符串替换
    LConfig:利用Lua脚本做程序的配置文件 [转]
  • 原文地址:https://www.cnblogs.com/MasterMonkInTemple/p/4679937.html
Copyright © 2020-2023  润新知