Groovy: SoapUI: SoapUiRunner.groovy

package com.gemalto.mcx.groovy

/**
 *
 * @author Lance Roberts
 */
class SoapUiRunner {
        def log
        def testRunner

     /*
     * Constructor:
     * For internal calls
     */    
     def SoapUiRunner(){
     }
     
    /*
     * Constructor:
     * For internal calls
    */    
    def SoapUiRunner(log, testRunner){
        this.log = log
        this.testRunner = testRunner
        
        

    }

    def TestSuite_List_GetAndRun(pathExcelRunner){
        log.info "In TestSuite_List_Get()"
        //def testRunner2 = testRunner
        // Read from Excel workbook and make a list of tests to run
        //
        //def pathExcelRunner = "T://TestFramework//doc//TestRunner1.xls"

        def excel = new SoapUiExcel(log, testRunner)
        def thisProjectName = excel.Excel_ProjectName_Reader(pathExcelRunner)
        def testSuiteList = excel.Excel_TestSuite_Reader(pathExcelRunner)
        TestSuite_List_Run(thisProjectName, testSuiteList)
        }     
    
    def TestSuite_List_Run(thisProjectName, testSuiteList){
        log.info "In TestSuite_List_Run()"
        def thisTestRunner = null
        def thisTestCase = null
        def thisTSFailed = null
        def thisTSStat = null
        def thisTCFailed = null
        def thisTCStat = null   
        def thisTRFailed = false
        def thisTRStat = null
        
        // OPEN a project
        def thisProject = testRunner.getTestCase().getTestSuite().getProject().getWorkspace().getProjectByName(thisProjectName) //MCX-GMPP-LAB1-v2.16g        
        
        
        
        
       //def thisTSuite = testRunner.testCase.testSuite.
        
        
        
        // LOOP through the TestSuiteList, RUN TestCase, log RESULT
        for (j in testSuiteList){
            thisTSFailed = false
            //log.info """Queuing TestSuite: ${j}"""
            //log.info "Getting Project..."
            //log.info """Getting TestSuite ${j}..."""
            def thisTestSuite = thisProject.getTestSuiteByName(j)
            log.info "TS NAME__: " + thisTestSuite.name + ": START"
            //log.info """Got TestSuite ${j}..."""
            
            // get list of testcases in testsuite
            def testCaseList = thisTestSuite.getTestCaseList()
            //def testCaseListResult = []
            for (tc in testCaseList){
                thisTCFailed = false
                //log.info "TESTCASE NAME   : " + tc.name
                thisTestCase = thisTestSuite.getTestCaseByName(tc.name)
                //log.info """Running TestCase in ${tc.name}"""
                thisTestRunner = thisTestCase.run(new com.eviware.soapui.support.types.StringToObjectMap(), false)
                if (thisTestRunner.getStatus().toString() == "FAILED") {
                    thisTCFailed = true
                    thisTSFailed = true
                    thisTRFailed = true
                }
                //log.info "RESULT" + thisResult.status
                thisTCStat = thisTCFailed ? "FAIL" : "PASS"
                //log.info "TC FINAL: " + j + " : " + thisTCStat + "---"
                log.info "TC STATUS: " + thisTestSuite.name + ": " + tc.name + ": " + thisTCStat // + ": " + thisTestRunner.getStatus() + " : "
                //testCaseListResult.add(thisTestRunner.getStatus())
            }
            //log.info "TEST CASES DONE..."
            thisTSStat = thisTSFailed ? "FAIL" : "PASS"
            log.info "TS STATUS: " + j + ": " + thisTSStat
        }
        //log.info "TEST SUITES DONE..."
        thisTRStat = thisTRFailed ? "FAIL" : "PASS"
        log.info "TEST RUN FINAL: " + thisTRStat
    }

    def Run_TestSuite(){
        //
    }
    
    def Run_TestCase(){
        //get test case from other project or from the same one
        //project = testRunner.getTestCase().getTestSuite().getProject().getWorkspace().getProjectByName("ExcelTests")
        project = testRunner.getTestCase().getTestSuite().getProject().getWorkspace().getProjectByName("ExcelTests")
        testSuite = project.getTestSuiteByName("Test01")
        testCase = testSuite.getTestCaseByName("TestCase01")

        //set properties if you need
        //testRunner.testCase.setPropertyValue(property_name, property_value)
        //testRunner.testCase.setPropertyValue(another_property_name, another_property_value)

        // run test case
        def runner = testCase.run(new com.eviware.soapui.support.types.StringToObjectMap(), false)
    }
    
}

Tags