文章来自:http://www.bubuko.com/infodetail-2093455.html
尽管TestCase的默认流程是相互依次执行定义的测试步骤,但根据以前的TestStep的结果,可能希望循环或分支的许多场景。有几种方法可以在soapUI中完成此操作:
- 通过使用Conditional Goto TestStep
- 通过创建一个为您执行此操作的Script TestStep
- 通过使用DataSource循环步骤 - 这与DataSource TestStep紧密相关,并在DataDriven测试部分中介绍
1、用于流程控制的测试步骤
Conditional Goto TestStep可包含任意数量的XPath表达式以及相应的目标TestStep。这些应用于之前TestStep的最近响应;配置的XPath表达式从上到下应用,当XPath表达式计算结果为true时,Conditional Goto将执行转移到指定的TestStep。
左上角的列表包含定义的条件(现在为空),右边的编辑器允许在创建条件之后进行编辑,底部的日志可以帮助我们测试一下;
选择添加按钮到左上角并输入一些名字;
按OK,然后选择右下角的XPath向导
这里最近的TestStep是一个JDBC请求,我们可以看到生成的XML以树形视图呈现,使我们能够轻松地选择我们想要用于我们的条件的节点。选择它并按OK后,我们得到以下内容:
生成的XPath是顶部的,在底部,我们现在必须选择TestCase应该跳转到哪个步骤,如果XPath表达式计算为true(现在不需要将上述生成的XPath包围到exists(…)子句来检查指定元素的存在)。
现在如果我们使用顶部的工具栏按钮运行Conditional Goto,我们得到:
日志显示我们的条件已成功触发。现在我们可以添加更多条件与不同的条件和分支,允许我们根据需要路由TestCase执行。
2、使用Script TestStep分支和循环
脚本为您提供精细的可能性来控制TestCase的流程,允许您跳转到TestCase中任何所需的TestStep,或者只是运行该TestStep,而不会实际执行它。
testRunner.gotoStepByName( “nameofteststep” )
该方法在脚本完成之后将控制权转移到指定的TestStep(不是瞬间!)。所以例如以下脚本,可以在两个目标步骤之间随机选择:
if( Math.random() > 0.5 ) testRunner.gotoStepByName( “Request 1”) else testRunner.gotoStepByName( “Request 2”) // do something else … |
---|
testRunner.runTestStepByName( “nameofteststep” )
它实际上执行指定的TestStep。更改上述脚本以使用此方法
if( Math.random() > 0.5 ) testRunner.runTestStepByName( “Request 1”) else testRunner.runTestStepByName( “Request 2”) // do something else … |
---|
This would run the specified TestStep before moving on. Surrounding this in a loop as follows:
// run ten random requests for( i in 1…10 ) { if( Math.random() > 0.5 ) testRunner.runTestStepByName( “Request 1”) else testRunner.runTestStepByName( “Request 2”) } // do something else … |
---|
在执行剩余的脚本之前会运行十个随机请求。这里使用gotoTestStepByName将没有任何效果,它会导致与第一个例子相同。