SOAPUI模块化

如果测试场景变得越来越复杂,您可能希望在不同的TestCases之间共享一些TestSteps,也许可以设置一些先决条件(登录等)或在不同的上下文中执行某些步骤。和往常一样,在SoapUI中有几种方法可以实现这一点;

  1. 通过使用“Run TestCase”TestStep来执行其他TestCases
  2. 通过创建脚本并使用SoapUI API来执行所需的TestSteps,TestCases等。

The "Run TestCase" TestStep

Run TestCase TestStep提供了一种灵活的模块化方法;它执行配置的目标TestCase可选地在执行之前和之后传递和检索属性,例如您可以使用它来调用复杂的TestSteps序列来执行和验证登录过程,传递所需的凭据并接收结果的sessionid。当配置TestStep时,它将如下所示:

前两个选项用于选择实际目标TestCase,其余选项与属性/会话管理和线程执行相关。让我们详细看看这些

Property Management

Run TestCase TestStep将包含与所选目标TestCase相同的属性,允许您同时指定将在执行时传递给目标TestCase的值(非常类似于方法参数),并将属性选择为“返回属性”,其值将在执行后从目标TestCase中提取(非常像返回值)。选择“Ignore Empty Properties”选项将确保调用TestStep中不包含任何值的属性将不会覆盖目标TestCase中的任何值。

现在当运行Run TestCase TestStep(使用其工具栏中的Run按钮)时,它会将用户名和密码属性的值复制到目标TestCase并执行它。目标TestCase依次执行登录并将生成的sessionid复制到相应的TestCase属性中,后者又被复制回调用TestStep;

您可以查看这个,就像我们调用Login TestCase一样,它是一个采用输入参数并返回的方法。

设置运行模式

执行目标TestCase时,可以通过几种不同的方式配置Run TestCase TestStep的模式:

  • 每次执行通过在内存中创建目标TestCase的副本。这具有支持多个同时呼叫的优点,例如,如果运行调用TestCase作为LoadTest。缺点是在执行TestCase之后,任何属性更改都会丢失,并且需要更多的内存来执行新的副本。
  • 通过执行现有的TestCase,只要您不需要同时从多个源调用相同的TestCase即可正常工作,在多线程情况下,调用Run TestCase Teststep将失败,除非您将其配置为等待为目标TestCase首先完成

当运行包含Run TestCase TestStep作为LoadTest的TestCase时,上述情况变得尤为重要;在这种情况下,第一个选项是唯一可以顺利运行的选项,否则LoadTest中的所有线程都将调用TestCase的同一个实例,否则将导致它失败。

使用脚本进行模块化

与往常一样,SoapUI API允许您通过脚本TestStep完成此操作。让我们快速了解一下如何使用脚本来实现上述方案;

import com.eviware.soapui.model.testsuite.TestRunner.Status

// get TestCase

def tc = testRunner.testCase.testSuite.project.testSuites["Sample Simple TestSuite"] .testCases["Simple Login and Logout w. Properties Steps"]

// set login properties

tc.setPropertyValue("Username", "ole" ) tc.setPropertyValue("Password", "nomoresecrets" )

// run test synchrouously

def runner = tc.run( null, false )

// show that it worked out ok

log.info "Status: $runner.status, time taken for TestCase was: $runner.timeTaken ms"

// assert that it didn‘t fail

assert runner.status != Status.FAILED : runner.reason

这里检索和执行目标TestCase;如果失败,抛出异常(通过assert语句),这也将导致Groovy Script TestStep失败

时间: 2024-11-08 20:53:06

SOAPUI模块化的相关文章

用soapui进行功能测试-TestSteps的使用

如前所述,TestSteps是soapUI中功能测试的核心构件;每个TestStep都执行一些步骤来验证要测试的功能. TestSteps默认是依次执行的,但是分支,循环甚至调用其他TestCases有几种可能性,在需要时可以进行复杂的测试.任何数量的TestSteps都可以添加到TestCase中;通过右键单击TestStep列表并选择添加/插入或按TestCase窗口中相应的按钮添加它们: 当选择TestStep时,其右键单击菜单会显示相应的操作,左下角的属性表显示可设置的相关属性,例如下面

新安装的soapui启动时报错及解决方法

今天新安装了soapui准备测试一下接口,结果安装成功后启动时报错:The JVM could not be started. The maximum heap size (-Xmx) might be too large 意思就是:Java虚拟机无法启动.Xmx可能太大 这时就需要将这个参数的值改小一点. 经过排查这个参数在soapui安装目录\bin\目录下的vmoptions配置文件中 将原来的值改为800,保存后启动成功

SOAPUI中文教程---soapUI的模块对象

所有的东西都是ModelItems 在soapUI的所有与项目相关的物件(项目,请求,测试套件等)是ModelItems,其接口在com.eviware.soapui.model包和子包都定义(例如com.eviware.soapui.model.iface封装接口/操作/请求相关的类). modelItems的名称,描述,图标等等都可以通过相应的访问,例如 log.info project.name 将打印项目变量的名称. ModelItem的一般模型有如下(XX =子类型): int get

可以将TCP BBR算法模块化到低版本内核取代锐速吗

上周的文章引发了比较火爆的争论并带来了争议,我比较满意或者遗憾,尽管如此,如果有人真的能明白在文章的背后我真正想表达的意思,我也就深感欣慰了.还像往常一样,我花周末的时间来总结结束,写点技术散文,同时我希望能在技术上引发同样的争论.        在跟温州皮鞋厂老板聊天时,老板让我从非技术角度重新思考了Google的BBR算法.        很多测试似乎表明BBR的表现非常不错,虽不能保证包打天下,至少相比锐速而言,它是免费的啊,那么疑问也就随之而来了,既然BBR是免费的,且效果不错,那么那些

从273二手车的M站点初探js模块化编程

前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数据. 273这个M站点是产品推荐我看的.第一眼看这个产品时我就再想他们这个三次加载和翻页按钮的方式,那么小分页的pageIndex是怎么计算的.所以就顺便看了下源码. 提到看源码时用到了Chrome浏览器的格式化工具(还是朋友推荐我的,不过这个格式化按钮的确不明显,不会的话自行百度). 三次加载和分

C言语模块化开辟(多文件编程)

你好,欢迎离开「C言语模块化开辟」专题,在这里你将进修到大中型程序开辟技巧.本专题由C言语中文网站长执笔,将多年的编程经历灌注贯注个中,典型的理论派,你可以猛击<关于作者><若何才干完成这部教程>理解教程面前的故事.到今朝为止,我们编写的大局部C言语程序都只包括一个源文件,没有将代码疏散到多个模块中,关于只要几百行的小程序来说这或答应以承受,但关于动辄上万行的大中型程序,将一切代码都集中在一个源文件中几乎是一场灾害,后续浏览和保护都将称为顺手的成绩.在C言语中,我们可以将一个.c文

Selenium模块化

概述 高内聚低耦合是软件设计的一个基本原则. 内聚:从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事.它描述的是模块内的功能联系. 耦合:各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度.进入或访问一个模块的点以及通过接口的数据,模块之间联系越紧密,其耦合性就越强,模块的独立性则越差. 自动化测试模型也遵循上面的原则,下面从本人熟悉自动化测试的过程中来了解一下. 线性测试 先看两组脚本内容,实际应用过程中以百度进行示例 脚本1 from selenium impor

2.精通前端系列技术之JavaScript模块化开发

在使用seajs模块化开发之前,直接在页面引用js会容易出现冲突及依赖相关的问题,具体问题如下 问题1:多人开发脚本的时候容易产生冲突(比如全局参数冲突,方法名冲突),可以使用命名空间降低冲突,不能完全避免冲突 // JavaScript Document /*var a = 10; function tab(){} function drag(){} function dialog(){}*/ var miaov = {}; //名字比较长 , 只能降低冲突,不能完全避免 miaov.a =

UC前端‘搭积木’的模块化开发——scrat.js

模块化开发 将模块所需的js\css\img\tmpl维护在一起,一个模块一个目录 js渲染模板 css只关心模块内样式 开发团队心声:"我们希望每次研发新产品不是从零开始,不同团队不同项目之间能有可复用的模块沉淀下来." 模块生态 每个工程有_工程模块_和_生态模块_. 生态模块:基于_component规范_开发,部署到Github上,可以通过命令行工具将Github上的模块安装到工程中使用.比如:jQuery, iscroll, zepto.js, vue.js 安装命令: sc