1.1.1 Groovy Script
soapUI通过以groovy语言编写的脚本来大量支持您的项目。
- Groovy脚本TestSteps可用于向功能TestCase添加任意功能。
- 脚本断言用于任意断言SOAP或REST响应。
- Setup / TearDown脚本可用于测试案例,测试套件和负载测试中的初始化/清理。
- 启动/关闭脚本可用于MockService中的初始化/清理。
- 之前/之后请求脚本可用于提前调度/处理对MockService的请求。
- MockOperation调度脚本用于为请求选择相应的MockResponse。
- MockResponse脚本用于为特定的MockResponse执行任意功能。
- AfterLoad / BeforeSave脚本可用于在其生命周期中初始化/清理项目。
- soapUI扩展可以在soapUI Pro中以groovy脚本来扩展核心的soapUI功能。
- 可以在soapUI Pro中使用Groovy脚本库来集中通用脚本。
- 脚本属性扩展可用于在属性扩展期间执行任意功能。
- DataSource脚本可以在soapUI Pro中用于生成测试用例的数据。
- DataSink脚本可以在soapUI Pro中用于在TestCase运行期间保存数据
- DataGen脚本属性可以在soapUI Pro中用于动态生成属性值。
所有脚本都可以访问许多特定于情境的变量,它们始终包括用于记录Groovy日志的日志对象和用于执行上下文特定的PropertyExpansions或属性处理(如果适用)的上下文对象。 上下文特定变量始终可用于直接访问SoapUI对象模型。
1.1.1.1 Script Editors
脚本编辑器通常作为相应对象编辑器底部的检查器,每个都具有运行按钮,下拉编辑菜单(与右键单击弹出窗口相同),信息标签和帮助按钮;
弹出菜单(如上所示)包含标准的编辑相关操作,并且SoapUI Pro中将包含一个“获取数据”菜单选项,该选项将展开以显示当前范围内可用的所有属性。 例如,选择属性(或创建新的属性的选项)最终将创建一个脚本来获取变量
def connectionurl = context.expand( '${#Project#connection-url}' )
获得项目级“connection-url”属性。
当属性模式进入脚本时,还可以从导航树中拖动一个属性; 如果拖动的属性是“范围内”(即可以通过属性扩展访问),则将在插入位置创建相应的访问脚本。
1.1.1.2 所有的东西都是ModelItems(几乎)
在soapUI中,所有与项目相关的工件(Projects,Requests,TestSuites等)都是ModelItems,它们的接口都在com.eviware.soapui.model包和子包中定义(例如,看看com.eviware。 用于Interface / Operation / Request相关类的soapui.model.iface包)。
例如,可以通过相应的getter访问modelItems的名称,描述,图标等
log.info project.name
将打印项目变量的名称。
显然,取决于哪个类型的ModelItem,用于访问子项的属性和方法是可用的。 将某个类型的子项访问到ModelItem的一般模型如下(XX =子类型):
int getXXCount()
XX getXXByName( String name )
XX getXXAt( int index )
List getXXList()
Map getXXs()
例如,要在项目中获得某个模拟服务,您可以使用其中的一个
def mockService = project.getMockServiceByName( "My MockService" )
def mockService = project.getMockServiceAt( 0 )
可以在TestCase中迭代所有的LoadTests
for( loadTest in testCase.loadTestList )
log.info loadTest.name
由于groovy简化了Map访问,所以最后一个可以从脚本中以多种方式使用,例如,如果我们有一个TestSuite并且想访问它的TestCases,我们可以同时执行
testSuites.testCases["..."]
和
testSuites.testCases."..."
父对象通常可以通过其类型的名称来获得,即
log.info( testCase.testSuite.name + " in project " + testCase.testSuite.project.name )
使用testSuite和项目属性在对象模型中“向上”导航。
1.1.1.3 属性
经常要操作脚本中的属性,无论是基于内建属性还是那些自定义属性,可以在soapUI,Projects,TestSuites,TestCases,MockServices和PropertiesTestStep中的以下对象上设置以下属性(这些都是继承的 来自MutableTestPropertyHolder)。
设置/获取属性很简单
// set property value
object.setPropertyValue( "name", "value" )
object.properties["name"].value = "value"
// get property value
log.info object.getPropertValue( "name" )
log.info object.properties["name"].value
log.info object.properties."name".value
1.1.1.4 上下文
当在某种“运行”中编写脚本时,总是有一个可用于获取/设置上下文相关变量的上下文变量。 上下文是:
- SubmitContext - 一次提交请求中可用
- TestRunContext - 可以从TestCase运行中的所有脚本中获得
- LoadTestRunContext - 可在Load Test setup / tearDown脚本中使用,并通过Load TestContext上下文变量从Exectued TestCase上下文中获取
- MockRunContext - 可用于MockService启动/关闭脚本和MockOperation / MockResponse分派脚本
所有这些都继承自PropertyExpansionContext接口,该接口具有用于设置/获取属性的方法和一个可用于扩展包含Property-Expansions的任意字符串的扩展方法。
1.1.1.5 日志
注意到,所有的scipts都有一个“log”变量。 这是一个标准的log4j Logger,它附加到soapUI窗口底部的groovy日志选项卡,可用于诊断目的等。