如何在SoapUI的TearDown脚本中获取TestCase状态?
解决SoapUI TestCase TearDown脚本获取状态的问题
你之前方法失效的原因
- 方法1:
WsdlTestCase确实没有getTestStepCollection()方法,正确获取步骤集合的方式是testRunner.testCase.testSteps - 方法2:TearDown执行阶段,TestCase的状态还未完成最终更新,所以
testRunner.status始终返回RUNNING - 方法3:
RestTestRequestStep本身不提供getStatus()方法,必须通过执行结果对象获取步骤状态
可行解决办法
方法1:直接获取TestCase的最终执行结果状态
// 获取当前TestCase的最新执行结果 def testCaseResult = testRunner.results[-1] // 提取状态并转为字符串 def testCaseStatus = testCaseResult.status.toString() log.info "当前TestCase状态:${testCaseStatus}"
此方法直接从执行结果集中取最终状态,能准确拿到PASSED/FAILED等结果。
方法2:遍历TestStep结果判断整体状态
如果需要通过检查每个步骤的执行结果来判定用例状态:
def hasFailed = false // 遍历当前TestCase的所有步骤 testRunner.testCase.testSteps.each { step -> // 获取该步骤的执行结果 def stepResult = testRunner.getResult(step) if (stepResult && stepResult.status == com.eviware.soapui.model.testsuite.TestStepResult.Status.FAILED) { hasFailed = true } } // 根据是否有失败步骤判定用例状态 def testCaseStatus = hasFailed ? "FAILED" : "PASSED" log.info "当前TestCase状态:${testCaseStatus}"
方法3:SoapUI Pro专属方式(免费版不支持)
如果使用SoapUI Pro,可直接调用TestCase的状态属性:
def testCaseStatus = testRunner.testCase.status.toString() log.info "当前TestCase状态:${testCaseStatus}"
内容的提问来源于stack exchange,提问作者rAJ
相关产品推荐
相关产品推荐

