多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
- [获取测试用例对象](#Get-test-case-object) - [将测试运行状态改为失败](#Fail-the-Test-Run) - [终止测试](#Stop-Test-Execution) - [通过测试步骤名称运行测试步骤](#Run-Test-Step-By-Name) - [创建 context 对象的属性](#Create-Context-Related-Property) - [分叉测试用例](#Branch-Test-Case) - [创建断言](#Create-an-Assertion) - [修改断言](#Modify-Assertion) - [移除断言](#Remove-Assertions) - [获取属性值](#Get-Property-Value) - [设置属性值](#Set-Property-Value) **<span id="Get-test-case-object">获取测试用例对象</span>** ``` def case = testRunner.testCase; ``` 通过 [testCase](https://support.smartbear.com/readyapi/apidocs/soapui/com/eviware/soapui/model/testsuite/TestCase.html) 对象访问或操作项目的测试项。 **<span id="Fail-the-Test-Run">将测试运行状态改为失败</span>** 1、如果只是让 Groovy Script 测试步骤失败,在脚本中抛出一个异常: ~~~ throw new Exception("Result not as expected!") ~~~ 如果测试用例中的 **Abort test if an error occurs** 选项被勾选, 那么测试将停止。否则,测试将继续执行。 2、如果要让整个测试运行失败,使用 `testRunner.fail` 方法。无论是否勾选 **Abort test if an error occurs** 选项,测试用例都将被标记失败并停止执行。 ~~~ testRunner.fail("Result not as expected!") ~~~ **<span id="Stop-Test-Execution">终止测试</span>** `testRunner` 脚本对象停止当前测试运行的两个方法: - `cancel(String reason)` - 停止运行测试,并标记为 *Canceled* 。String 参数填写终止测试的原因。 - `fail(String reason)` - 停止运行测试,并标记为 *Fail* 。String 参数填写终止测试的原因。 ~~~ if (testObject == null) { testRunner.fail("testObject was not found") // 停止运行测试 } ~~~ **<span id="Run-Test-Step-By-Name">通过测试步骤名称运行测试步骤</span>** 使用 `testRunner` 对象的 `runTestStepByName` 方法,运行当前测试用例中的任意一个测试步骤。该方法运行指定的测试步骤并返回结果。例如,下面的代码片段在脚本开始时运行了 10 个随机请求: ~~~ // 运行 10 个随机请求 for( i in 1..10 ) { if( Math.random() > 0.5 ) testRunner.runTestStepByName( "Request 1") else testRunner.runTestStepByName( "Request 2") } // Do something else ~~~ **<span id="Create-Context-Related-Property">创建 context 对象的属性</span>** 创建一个 `foo` 属性,并在另一个 groovy 脚本中访问该属性(仅限当前测试用例): ~~~ // Script 1 context.foo = "My Value" // Script 2 log.info(context.foo) ~~~ **<span id="Branch-Test-Case">分叉测试用例</span>** 使用 `testRunner` 对象的 `gotoStepByName` 方法,在脚本执行完后跳转到指定测试步骤继续执行。例如,随机选择下一个测试步骤: ~~~ if( Math.random() > 0.5 ) testRunner.gotoStepByName( "Request 1") else testRunner.gotoStepByName( "Request 2") // do something else before executing one of the requests ~~~ **<span id="Create-an-Assertion">创建断言</span>** 创建断言的步骤: 1、通过 `testCase` 对象的 `getTestStepByName` 方法得到一个测试步骤。 2、使用 `addAssertion` 方法添加一个断言,并设置断言名称。 ReadyAPI 将使用指定的名称和默认的配置来创建一个新的断言。 >[warning]如果指定的名称已存在,你将被提示:断言名称不能重名。此时测试将停止,直到关闭对话框。 为 *Test Request* 步骤添加一个 [Valid HTTP Status Codes]() 断言: ~~~ // Get the test step object def ts = testRunner.testCase.getTestStepByName("Test Request") // Add the assertion def vas = ts.addAssertion("Valid HTTP Status Codes") ~~~ **<span id="Modify-Assertion">修改断言</span>** 使用特定的断言方法,修改已创建的断言。例如,使用 `Assertion` 对象的 `setCodes` 方法,修改 [Valid HTTP Status Codes]() 和 [Invalid HTTP Status Codes]() 断言的预期值。 在创建断言时,获得 `Assertion` 对象: ~~~ // 获取测试步骤对象 def ts = testRunner.testCase.getTestStepByName("Test Request") // 添加断言 def vas = ts.addAssertion("Valid HTTP Status Codes") // 设置断言 code vas.setCodes("200,202") ~~~ 修改已创建的断言: ~~~ // 获取测试步骤对象 def ts = testRunner.testCase.getTestStepByName("Test Request") // 遍历所有断言 for ( e in assertionsList) { // 如果断言名称匹配 if (e.getName() == "Valid HTTP Status Codes") { // 设置断言 code e.setCodes("503, 504") } } ~~~ **<span id="Remove-Assertions">移除断言</span>** 使用 `removeAssertion` 方法移除断言,方法参数为要移除的断言对象。 移除上面创建的断言: ~~~ // 获取测试步骤对象 def ts = testRunner.testCase.getTestStepByName("Test Request") // 遍历所有断言 for ( e in assertionsList) { // 如果断言名称匹配 if (e.getName() == "Valid HTTP Status Codes") { // 移除断言 ts.removeAssertion(e) } } ~~~ **<span id="Get-Property-Value">获取属性值</span>** 获取属性值的步骤: 1、获取包含该属性的对象。 2、使用 `getPropertyValue()` 方法获取属性对象。 获取测试套件的属性: ~~~ // 获取测试套件对象的 username 属性 def username = testRunner.testCase.testSuite.getPropertyValue( "Username" ) ~~~ **<span id="Set-Property-Value">设置属性值</span>** 使用 `setPropertyValue()` 方法设置属性值。例如,设置 *HTTP Request* 步骤的 *Username* 参数的值: ~~~ // Write the username to the HTTP Request testRunner.testCase.testSteps["HTTP Request"].setPropertyValue( "Username", username ) ~~~ 参考资料: 1. [Groovy Script - Working With](https://support.smartbear.com/readyapi/docs/soapui/steps/groovy.html#working-with) --- :-: --- 贡献者名单(排名不分先后) --- :-: **材料** :-: **编写** 李云 :-: **校验** :-: **支持**