testing - 如何从 SOAP UI TestSuite 拆解脚本获取测试运行断言结果(状态和名称)?

标签 testing groovy soapui

我无法从 SOAP UI 中测试套件拆卸级别的测试步骤获取断言结果。我查看了 Javadoc 并尝试使用 getAssertionList() 但调用它会导致错误。到目前为止,这是我的 Groovy 脚本:

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] 但没有断言或日志条目的结果,但我收到此错误:

2015 年 11 月 6 日星期五 10:13:36 EST:错误:发生错误 [没有方法签名:com.eviware.soapui.impl.wsdl.teststeps.WsdlPropertiesTestStep.getAssertionList() 适用于参数类型:() values: []], 详情见错误日志

最佳答案

对于 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"

关于testing - 如何从 SOAP UI TestSuite 拆解脚本获取测试运行断言结果(状态和名称)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570471/

相关文章:

javascript - 我想在 Postman Native App 中使用 moment.js(或任何其他脚本)

java - 接收 JMeter 需要 saveservice 属性文件才能继续错误

heroku - 通过 Jenkins 推送到 Heroku 的教程

c# - 如何使用 POSTMAN 或任何客户端工具应用程序调用 RestFul WCF POST 服务?

java - 没有找到类定义 ProxyBypassListSelector

groovy - 需要帮助 - SoapUi testRunner.getStatus() 无限期地返回状态 "RUNNING"

java - 如果我有选择操作,谁能告诉我如何测试我的 Camel 路线?

testing - 创建越来越大的测试文件

java - 如何使用 java.nio.Files 创建软符号链接(symbolic link)

groovy - 由 Eval 或 GroovyShell 执行时的惰性 GString 评估