我在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' )
}
答案 0 :(得分:0)
与评论中提到的一样,根据评论中分享的详细信息,可以使用Conditional GoTo
测试步骤。但是,它可能需要多个。相反,Groovy Script
可能是此方案中的最佳方式。
以下是详细信息,假设以下是测试用例中的步骤。
测试用例:
以下是#3 中提到的Groovy Script
的伪代码。
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来触发测试用例/套件以及调用方法的差异。