soapUI-Groovy Script

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日志选项卡,可用于诊断目的等。

posted @ 2017-06-23 16:05  datasyman  阅读(855)  评论(0编辑  收藏  举报