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

Mis*_*ard 3 groovy automated-tests soapui

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

def TestCase = testRunner.getTestCase()
def StepList = TestCase.getTestStepList()
StepList.each
{
    log.info (it.name)
}
Run Code Online (Sandbox Code Playgroud)

现在我不确定如何从这里继续前进并获得该列表中每个步骤的失败状态

alb*_*iff 6

您可以使用以下方法:获取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)"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到并非所有testSteps都有assertionStatus(例如groovy testStep,这就是我在上面的代码中检查属性的原因).

此代码可以简单地用在testCase中groovy testStep或作为tear down scripttestCase使用.

如果您需要使用不同的方法来处理所有testSteps而不是仅针对具有assertionStatus属性的testSteps,则可以使用以下代码.但请注意,第一种方法优势是,如果您希望可以将其简单地使用groovy testStep,则替代方案是跟随脚本只能用作a tearDownScript并且只能在整个测试执行时正常工作,因为results只有在这个背景:

testRunner.results.each{ testStepResult ->
    log.info "${testStepResult.testStep.name} ${testStepResult.status}"
}
Run Code Online (Sandbox Code Playgroud)

testStepResult是一个实例,com.eviware.soapui.model.testsuite.TestStepResult你可以看一下api来获取更多信息.

希望这可以帮助,

  • @MistaWizard很高兴帮助你`:)`,问题是当你使用groovy testStep中的`run`方法直接运行testStep时,你只能得到`testStepResult` ...如果你想在所有的测试中做到这一点执行我认为这是简单的方式`:)`. (2认同)
  • @Elaine我更新了你的案例答案,希望这也符合你的要求. (2认同)