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

  • 相关阅读:
    计算GPS点之间的距离
    C/C++ 获取系统时间 到秒 || 到毫秒
    Qt QLabel QTextBrowser 实现网址链接
    Qt QLabel 显示gif动图
    Qt QDateEdit QDateTimeEdit
    Qt QSpinBox 和 QDoubleSpinBox
    Qt QLineEdit 漂亮的搜索框 && 密码模式 && 格式化输入 && 提示文字 && 选择内容并移动 && 清除全部输入
    Qt QLabel 大小随内容自动变化 && 内容填充整个label空间
    Qt QComBox 文本框输入itemText && 文本框查找item && 本文框添加Item &&设置显示Item数量
    JSON.parse()和JSON.stringify()
  • 原文地址:https://www.cnblogs.com/datasyman/p/7070429.html
Copyright © 2020-2023  润新知