【问题标题】:SoapUI Groovy Script, log.info detailed information about test steps run.SoapUI Groovy Script,log.info 有关运行测试步骤的详细信息。
【发布时间】:2016-10-20 10:42:23
【问题描述】:

我在 SoapUI 中有一个 Groovy 脚本,它为每个 TestStep 记录该步骤通过或失败的天气。我希望 Groovy 脚本也能记录错误的断言消息。

import com.eviware.soapui.model.testsuite.Assertable.AssertionStatus

def TestCase = testRunner.getTestCase()
def StepList = TestCase.getTestStepList()
StepList.each{
    // check that testStep has assertionStatus 
    // (for example groovy testSteps hasn't this property since
    // there is no asserts on its)
    if(it.metaClass.hasProperty(it,'assertionStatus')){
        if(it.assertionStatus == AssertionStatus.FAILED){
            log.info "${it.name} FAILED"    

        }else if(it.assertionStatus == AssertionStatus.VALID){
            log.info "${it.name} Passed"
        }else if(it.assertionStatus == AssertionStatus.UNKNOWN){
            log.info "${it.name} UNKNOWN (PROBABLY NOT ALREADY EXECUTED)"
        }
    }
}

目前我得到这个输出:

Thu Oct 20 11:31:06 BST 2016:INFO:TestStep_0051 Passed
Thu Oct 20 11:31:06 BST 2016:INFO:TestStep_0052 FAILED
Thu Oct 20 11:31:06 BST 2016:INFO:TestStep_0053 Passed

我希望失败的断言更详细地显示失败的原因。我收到消息是失败的 TestStep 本身:

assert node.toString().matches("(0|175.238|0)\\d*")       |    |          |      |    |          false           |    132.497286826667           132.497286826667

另外,当我运行这个 Groovy 脚本时,会弹出一个标题为“信息”的窗口,它只有黑色背景,而且宽得我似乎找不到它的右侧。有谁知道这是什么?

【问题讨论】:

    标签: logging groovy soapui assertions


    【解决方案1】:

    你可以试着修改一下你的代码,让我解释一下:

    您可以使用 getAssertionList() 访问 testStep 的所有断言,而不是仅访问最终的 AssertionStatus 以获取 testStep 结果,以避免不包含断言的 testSteps 出现问题,您可以使用 metaClass 检查此方法是否存在.

    然后对于此列表中的每个断言,您可以检查状态,对于失败的断言,您可以使用 getErrors() 方法获取错误消息。

    最后为了避免提示消息,因为默认情况下Groovy返回最后一个实例化对象(在你的脚本StepList)并且SOAPUI提示它,你可以添加一个return语句不返回任何内容并避免提示效果.

    import com.eviware.soapui.model.testsuite.Assertable.AssertionStatus
    
    def TestCase = testRunner.getTestCase()
    def StepList = TestCase.getTestStepList()
    StepList.each{
    
        // check that this kind of testStep
        // can contain assertions (avoid errors with groovy testSteps)
        if(it.metaClass.respondsTo(it,"getAssertionList")){
    
             def assertions = it?.getAssertionList()
    
             assertions?.each{ assertion ->
    
                if(assertion?.getStatus() == AssertionStatus.FAILED){
                  log.info "${it.name} FAILED"
                   assertion?.getErrors()?.each{ error ->
                     log.info "Error message ${error.getMessage()}"
                   }
                }else if(assertion?.getStatus() == AssertionStatus.VALID){
                    log.info "${it.name} Passed"
                }else if(assertion?.getStatus() == AssertionStatus.UNKNOWN){
                    log.info "${it.name} UNKNOWN (PROBABLY NOT ALREADY EXECUTED)"
                }
             }
         }
    }
    return
    

    【讨论】:

    • @Ross 很高兴帮助你:)
    猜你喜欢
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多