soapui + groovy 接口自动化测试 第六章
对线期--补刀稳健,才能无往不利!
Soapui创建项目,在TestStep右键--Insert Step中有一个功能列表,这个列表中加Request/Properties/Groovy Script/SOAP Mock Response等;
但是!这些我并不介绍如何使用,常用的仅仅Groovy Script!因为这些功能脚本都能调用,且绝大部分我们用不到的。这些功能如何使用请自觉查阅帮助文档;
点开一个Requset,点击左上角的绿色按钮,我们可以看到这个请求发过去了并接收到了服务器的返回;但是这是死的,我们需要把部分参数参数化才能让脚本活起来,下面我们来介绍各种参数;
1.system property 系统级别
设置参数
在testrunner.bat中使用-D参数进行设置,D : Sets system property with name=value
读取参数
这个参数我只在testrunner.bat上看到过如何设置,没测试如何读取;估计使用${#System#name}可以读取
2.global property 全局变量
设置参数
File--Preferences--Global Properties 在此设置全局变量
在testrunner.bat中使用-G参数进行设置,G : Sets global property with name=value
读取参数
context.expand($(#Global#name))
3.project property 项目变量
设置参数
双击项目名,点击右下角的Properties 在此设置项目变量
在testrunner.bat中使用-P参数进行设置,P : Sets project property with name=value, e.g. -Pendpoint=Value1 -PsomeOtherProperty=value2
testRunner.testCase.testSuite.testProject.setPropertyValue('name','test')
读取参数
context.expand($(#Project#name))
testRunner.testCase.testSuite.testProject.getPropertyValue('name')
3.Test Suite 测试结果集变量
设置参数
双击Test Suite,点击右下角Properties 在此设置测试结果集变量
testRunner.testCase.testSuite.setPropertyValue('name','test')
读取参数
context.expand($(#testSuite#name))
testRunner.testCase.testSuite.getPropertyValue('name')
4.Test Case 测试用例变量
设置参数
双击Test Case,点击右下角Properties 在此设置测试用例变量
testRunner.testCase.setPropertyValue('name','test')
读取参数
context.expand($(#testCase#name))
testRunner.testCase.getPropertyValue('name')
5.Test Steps 测试步骤变量
设置参数
双击Test Steps中的Request请求,设置参数列表中的值,这就是设置参数了;
在Test Steps中右键-Insert Step-Properties设置参数,它的读取方法也有多种,基本的就用testRunner读取,其他的就不介绍了;
在Groovy Script中使用context.setProperty('name','test') /context.[name] = [value] 自定义变量
testRunner.testCase.testSteps['测试步骤名字'].setPropertyValue('参数的名字','test');此方法用于直接设置Request请求中参数的值
读取参数
testRunner.testCase.testSteps['测试步骤名字'].getPropertyValue('参数的名字')
在整个TestCase里的所有TestStep引用context自定义变量,均可用${[property]}, e.g ¥{name}/context.[name]
备注:还有很多其他的参数设置方法,我用到的就上边这些,已经满足一般的脚本开发;
参数设置的原则:
同一级别公用的参数,设置在最近上一级别中;举个栗子,多个Test Steps公用的参数设置在Test Case;多个TestCase公用的参数设置在TestSuite;
这样设置参数比较清晰,便于数据在多个Test Steps/Test Case之间传递。