如何根据测试用例结果在SoapUI中运行指定的步骤

时间:2016-10-04 16:02:20

标签: groovy soapui

我在soapui中有更多测试用例的项目。运行每个测试用例后,我需要运行两个http请求中的一个,具体取决于步骤的结果。因此,如果testcase中的一个或多个步骤失败,我需要运行httprequest1,如果所有步骤都通过,我需要运行httprequest2。我怎样才能做到这一点?我尝试了很多脚本...现在我最好的解决方案是这样的,只需在测试用例结束时添加groovy脚本。问题是它只检查最后一步。我尝试了很多其他解决方案,但没有任何对我有用。有人可以帮我这个吗?谢谢

def lastResult = testRunner.getResults().last()
def lastResultStatus = lastResult.getStatus().toString()

log.info 'Test  + lastResultStatus

if( lastResultStatus == 'FAILED' )
{

 testRunner.gotoStepByName( 'httprequest1' )
 testRunner.testCase.testSteps["httprequest2"].setDisabled(true)

}
else
{
 testRunner.gotoStepByName( 'httprequest2' )
}

我尝试过的另一种解决方案:

for( r in testRunner.results )
result = r.status.toString()
log.info result

if( result == 'FAILED' )
{
testRunner.gotoStepByName( 'httprequest1' )
testRunner.testCase.testSteps["httprequest2"].setDisabled(true)
}
else
{
testRunner.gotoStepByName( 'httprequest2' )
}

2 个答案:

答案 0 :(得分:0)

与评论中提到的一样,根据评论中分享的详细信息,可以使用Conditional GoTo测试步骤。但是,它可能需要多个。相反,Groovy Script可能是此方案中的最佳方式。

以下是详细信息,假设以下是测试用例中的步骤。

测试用例:

  1. request step1
  2. 请求step2
  3. groovy脚本步骤(处理场景的建议脚本)
  4. 请求1步骤,如果超过step1&第二步是成功的
  5. request2 step
  6. 遵循步骤x
  7. 以下步骤y
  8. 以下是#3 中提到的Groovy Script的伪代码。

    • 评估之前的测试步骤执行结果,就像您目前正在做的那样。
    • 根据条件,如果为true则运行测试步骤#4,否则运行步骤#5。请注意,请勿使用gotoStepByName方法,而是按名称运行步骤。请参阅示例#15 here
    • 上述if .. else完成后,请使用gotoStepByName继续执行步骤#6,#7(当然,如果有的话)。

    注意:如果gotoStepByName用于在groovy步骤中运行步骤,则控件将不会再返回。

答案 1 :(得分:0)

使用testcase teardown调用该步骤,因为您必须对所有测试用例执行此操作。拆解脚本看起来像这样:

if(testRunner.status.toString() == "FAILED"){
       testRunner.runTestStepByName( "httprequest1")
       println "in if"
}else{
     testRunner.runTestStepByName( "httprequest2")
     println "in else" 
}

请注意,您必须使用SoapUI Runner来触发测试用例/套件以及调用方法的差异。