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