2015-11-06 24 views
1

我無法從SOAP UI中的測試套件拆卸級別的測試步驟中獲取斷言結果。我看着Javadoc並嘗試使用getAssertionList(),但調用它會導致錯誤。這裏是我的Groovy腳本至今:如何從SOAP UI TestSuite Teardown Script獲取測試運行斷言結果(狀態和名稱)?

def failedTestCases = 0 
def successTestCases = 0 
def failedTestSteps = 0 
def successTestSteps = 0 

runner.results.each { testCaseResult -> 
    def caseName = testCaseResult.testCase.name 
     def caseStatus = testCaseResult.status.toString() 
     if(caseStatus == 'FAILED'){failedTestCases ++} 
    else {successTestCases ++} 

    log.info "Test Case: $caseName $caseStatus" 

    testCaseResult.results.each{ testStepResults -> 
     testStepResults.messages.each() { msg -> log.info msg } 
     def stepName = testStepResults.testStep.name 
     def stepStatus = testStepResults.status.toString() 
     if(stepStatus == 'FAILED'){failedTestSteps ++} 
     else{successTestSteps ++} 

     log.info "Test Step: $stepName $stepStatus" 

     def testStep = testStepResults.testStep 
     log.info "XX" + testStep.name 
     testStep.getAssertionList().each{ 
      log.info "$it.label - $it.status" 
     } 
    } 
} 

log.info "Total test cases:" + (successTestCases + failedTestCases).toString() 
log.info "Total succeeded: $successTestCases" 
log.info "Total failed: $failedTestCases" 
log.info "Total test step count:" + (successTestSteps + failedTestSteps).toString() 
log.info "Total succeeded: $successTestSteps" 
log.info "Total failed: $failedTestSteps" 

我能看到XX [TestStepName],但無論從日誌條目斷言或結果,但我得到這個錯誤:

週五10年11月6日: 13:36 EST 2015:錯誤:發生錯誤[沒有方法的簽名:com.eviware.soapui.impl.wsdl.teststeps.WsdlPropertiesTestStep.getAssertionList()適用於參數類型:()values:[]],請參閱錯誤日誌以獲取詳細信息

回答

0

對於SOAP UI測試步驟,步驟類型很重要。我並不是那麼熟悉SOAP UI API,但有些測試案例似乎不支持getAssertionList()調用。所以我們在得到斷言之前檢查測試類型,看起來效果不錯。

這是我最後的腳本。似乎工作得很好。現在我可以獲得本地報告的測試用例,測試步驟和聲明。我正在使用SOAP UI免費版,所以我將使用它來輸出XML報告。

def failedTestCases = 0 
def successTestCases = 0 
def failedTestSteps = 0 
def successTestSteps = 0 
def failedAssertions = 0 
def successAssertions = 0 

runner.results.each { testCaseResult -> 
    def caseName = testCaseResult.testCase.name 
     def caseStatus = testCaseResult.status.toString() 
     if(caseStatus == 'FAILED'){failedTestCases ++} 
    else {successTestCases ++} 

    log.info "Test Case: $caseName $caseStatus" 

    testCaseResult.results.each{ testStepResults -> 
     testStepResults.messages.each() { msg -> log.info msg } 
     def stepName = testStepResults.testStep.name 
     def stepStatus = testStepResults.status.toString() 
     if(stepStatus == 'FAILED'){failedTestSteps ++} 
     else{successTestSteps ++} 

     log.info "Test Step: $stepName $stepStatus" 

      //Some test steps don't have assertions, so calling getAssertionList() blows up 
      //We want WSDLTestStep (request) 
     if (testStepResults.testStep.config.type == 'request') 
     { 
      testStepResults.testStep.getAssertionList().each{ 
       def assertLabel = it.label 
       def assertStatus = it.status 
       if (assertStatus == 'VALID') { successAssertions ++ } 
       else {failedAssertions ++ } 
        log.info "$it.label - $it.status" 
      } 
     } 
    } 
} 

log.info "Total test case count:" + (successTestCases + failedTestCases).toString() 
log.info "Total test cases succeeded: $successTestCases" 
log.info "Total test cases failed: $failedTestCases" 

log.info "Total test step count:" + (successTestSteps + failedTestSteps).toString() 
log.info "Total test steps succeeded: $successTestSteps" 
log.info "Total test steps failed: $failedTestSteps" 

log.info "Total test assertion count:" + (successAssertions + failedAssertions).toString() 
log.info "Total test assertions succeeded: $successAssertions" 
log.info "Total test assertions failed: $failedAssertions" 
相關問題