Common tasks that you can perform with the Groovy Script test step
https://support.smartbear.com/readyapi/docs/soapui/steps/groovy.html
Get test case object
To obtain the object which refers to the containing test case, use the following code snippet:
By using the testCase
object, you can access and manipulate test items of the project.
Fail the test run
There are two ways to fail the test run from your scripts:
-
To fail only the Groovy Script test step, throw an exception in your script:
throw new Exception("Result not as expected!")If the Abort test if an error occurs option is enabled in TestCase Options, the test will stop. Otherwise, it will continue.
-
To fail the entire test run, use the
testRunner.fail
method. This marks the test failed and stops the test run regardless of the Abort test if an error occurs option.testRunner.fail("Result not as expected!")
Stop test execution
The testRunner
scripting object has two methods to stop the current test run:
-
cancel(String reason)
– Stops the test run and marks it as Canceled. The string argument specifies the reason. -
fail(String reason)
– Stops the test run and marks it as Fail. The string argument specifies the reason.
Run test step by name
You can run any test step in the current test case. To do this, use the runTestStepByName
method of the testRunner
object. This method runs the specified test step and returns the result. For example, the following code snippet runs ten random requests before executing the remaining script:
// Run ten random requests
for( i in 1..10 )
{
if( Math.random() > 0.5 )
testRunner.runTestStepByName( "Request 1")
else
testRunner.runTestStepByName( "Request 2")
}
// Do something else
Create context related property
Branch test case
By using the gotoStepByName
method of the testRunner
object, you can command ReadyAPI to jump the test execution to the specified test step after the script has finished. For example the following script randomly selects the next test step:
if( Math.random() > 0.5 )
testRunner.gotoStepByName( "Request 1")
else
testRunner.gotoStepByName( "Request 2")
// do something else before executing one of the requests
Create an assertion
To create an assertion:
-
Obtain a test step by using the
getTestStepByName
method of thetestCase
object. -
Use the
addAssertion
method to create an assertion. -
Specify the assertion name as a string.
ReadyAPI will create a new assertion with the specified name and default settings.
Note: If you already have an assertion with the same name, you will be prompted to specify the unique assertion name. The test will not continue until you close the dialog.
For example, the following code snippet shows how to create a Valid HTTP Status Codes assertion for the Test Request test step:
// Get the test step object
def ts = testRunner.testCase.getTestStepByName("Test Request")
// Add the assertion
def vas = ts.addAssertion("Valid HTTP Status Codes")
Modify assertion
You can modify the created assertion by using assertion-specific methods.
For example, to change the code checked by Valid HTTP Status Codes and Invalid HTTP Status Codes by using the setCodes
method of the Assertion
object.
You can get this object when creating it in the following way:
// Get the test step object
def ts = testRunner.testCase.getTestStepByName("Test Request")
// Add the assertion
def vas = ts.addAssertion("Valid HTTP Status Codes")
// Set assertion codes
vas.setCodes("200,202")
If you have already created an assertion, you can access it in the following way:
// Get the test step object
def ts = testRunner.testCase.getTestStepByName("Test Request")
// Search all assertions
for ( e in assertionsList)
{
// If the assertion name matches
if (e.getName() == "Valid HTTP Status Codes")
{
// Set assertion codes
e.setCodes("503, 504")
}
}
Remove assertions
To remove an assertion, use the removeAssertion
method.
You need to specify the assertion object to remove.
Here is the sample code that will remove the assertion created in the example above.
// Get the test step object
def ts = testRunner.testCase.getTestStepByName("Test Request")
// Search all assertions
for ( e in assertionsList)
{
// If the assertion name matches
if (e.getName() == "Valid HTTP Status Codes")
{
// Delete the assertion
ts.removeAssertion(e)
}
}
Get property value
To get a property value:
-
Obtain the containing object.
-
Use the
getPropertyValue()
method to get a property object.
For example, the following code snippet gets a test suite property:
// Get username property from the test suite object
def username = testRunner.testCase.testSuite.getPropertyValue( "Username" )
Set property value
To write a value to a property, use the setPropertyValue()
method. For example, the following code snippet, specifies the Username parameter of the HTTP Request test step:
// Write the username to the HTTP Request
testRunner.testCase.testSteps["HTTP Request"].setPropertyValue( "Username", username )
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现