groovy脚本中的测试步骤结果列表

groovy脚本中的测试步骤结果列表,groovy,automated-tests,soapui,Groovy,Automated Tests,Soapui,我正试图找出一种方法来获取失败测试步骤的列表(名称),目前下面的代码给出了所有名称 def TestCase = testRunner.getTestCase() def StepList = TestCase.getTestStepList() StepList.each { log.info (it.name) } 现在我不知道如何从这里开始,并获取列表中每个步骤的失败状态。您可以使用以下方法:获取testSteps的断言状态,然后检查状态是否为failed、UNKNOWN或VAL

我正试图找出一种方法来获取失败测试步骤的列表(名称),目前下面的代码给出了所有名称

def TestCase = testRunner.getTestCase()
def StepList = TestCase.getTestStepList()
StepList.each
{
    log.info (it.name)
}

现在我不知道如何从这里开始,并获取列表中每个步骤的失败状态。您可以使用以下方法:获取testSteps的断言状态,然后检查状态是否为failed、UNKNOWN或VALID。您可以使用以下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} FAIL..."
        }else if(it.assertionStatus == AssertionStatus.VALID){
            log.info "${it.name} OK!"
        }else if(it.assertionStatus == AssertionStatus.UNKNOWN){
            log.info "${it.name} UNKNOWN (PROBABLY NOT ALREADY EXECUTED)"
        }
    }
}
考虑到并非所有testSteps都有断言状态(例如groovy testStep,这就是我检查上述代码中属性的原因)

此代码可以简单地用于
groovy测试步骤
,或者作为测试用例的
分解脚本

如果您需要一种不同的方法来处理所有测试步骤,而不是只处理具有
assertionStatus
属性的测试步骤,那么您可以使用下面的代码。但是请注意,第一种方法的优点是,如果需要,可以将其用作groovy测试步骤,另一种对应方法是,以下脚本只能用作
tearDownScript
,并且只能在整个测试执行过程中正常工作,因为
结果只能在该上下文中使用:

testRunner.results.each{ testStepResult ->
    log.info "${testStepResult.testStep.name} ${testStepResult.status}"
}
testStepResult是的一个实例


希望这有帮助,

Ohhh,你是对的-我一直在查看测试步骤状态,而实际上它是我需要查看的断言状态。这非常有帮助-我将在接下来的24小时内再次使用代码时尽快将其设置为已回答。感谢you@MistaWizard很高兴能帮助您
:)
,问题是当您直接使用groovy testStep中的
run
方法运行testStep时,您只能获得
testStepResult
。。。如果您想在执行所有测试时执行此操作,我认为这是一种简单的方法
:)
。太棒了!我将你的代码复制/粘贴到一个拆卸脚本中,瞧:)我现在在脚本中得到一个“信息状态”log@MistaWizar很高兴能帮助你。
:)
@Elaine我为你的案例更新了我的答案,希望这也符合你的要求。