我试图找出一种获取失败测试步骤的(名称)列表的方法,目前下面的代码给了我所有的名字
def TestCase = testRunner.getTestCase()
def StepList = TestCase.getTestStepList()
StepList.each
{
log.info (it.name)
}
现在我不确定如何从这里继续前进并获得该列表中每个步骤的失败状态
答案 0 :(得分: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)"
}
}
}
请注意,并非所有testSteps都有assertionStatus(例如groovy testStep,这就是为什么我在上面的代码中检查属性)。
此代码只能在groovy testStep
或tear down script
用于testCase。
如果您需要使用不同的方法来处理所有testSteps而不是仅针对具有assertionStatus
属性的testSteps,则可以使用以下代码。但请注意,第一种方法优势是,如果您希望将其用作简单的groovy testStep
,则替代对应方是,以下脚本只能用作tearDownScript
,并且只能正常使用整个测试执行,因为results
仅在此上下文中可用:
testRunner.results.each{ testStepResult ->
log.info "${testStepResult.testStep.name} ${testStepResult.status}"
}
testStepResult是com.eviware.soapui.model.testsuite.TestStepResult
you can take a look at api to get more info.
希望这有帮助,