[toc]
ReadyAPI 支持以库的形式来管理 Groovy 类,因此你可以集中管理常见任务、功能或者创建全面的脚本扩展。
# 配置脚本文件夹
默认情况下,ReadyAPI 将 `<ReadyAPI installation>\bin\scripts` 文件夹作为 Groovy 脚本库。如果要自定义文件夹,请遵循以下步骤:
1、打开设置:**Preferences** > [ReadyAPI](ReadyAPI_.md) 。
2、在 **Script Library** 选项指定脚本所在文件夹路径,然后点击 **OK** 。
ReadyAPI 将扫描该文件夹下的 Groovy 文件,并且在启动时编译它们。另外,ReadyAPI 每隔 5 秒扫描一次该文件夹,并且编译或重新编译新增或更新的脚本。
# 包结构
来自某个包下的 Groovy 类,应该被放置在与包同名的子文件夹下。比如, `soapui.demo` 包下的类文件应该放置在 `/soapui/demo` 文件夹。
The classes ReadyAPI compiles will appear in the parent class loader of all Groovy scripts.(I don't understand.)你可以将其当作标准的 Java 类来访问。
>[warning]每个脚本文件必须是合法的类,而不是一个普通的脚本文件。
# 示例
本示例将介绍如何在 ReadyAPI 中使用自定义的 Groovy 类,并在稍后修改、重载该类。首先,创建一个 `Callee.groovy` 类:
1、新建一个文件夹:`C:\GroovyLibrary\readyapi\demo` 。
2、在新建的文件夹下,新建一个 `Callee.groovy` 文件。
3、将下面的内容复制到文件中:
```groovy
package readyapi.demo
// 创建一个类:Callee ,稍后会在 ReadyAPI 中调用该类。
class Callee
{
String hello()
{
return "Hello world!"
}
def static salute( who, log ) { log.info "Hello again $who!" }
}
```
## 导入库
1、打开 **Preferences** > **ReadyAPI** 。
2、在 **Script Library** 选项,输入新建的文件夹路径,这里是 `C:\GroovyLibrary` 。
3、重启 ReadyAPI 或 稍等几秒以加载库(文件夹中的类)。
4、新建一个测试步骤:[Groovy Script](GroovyScript.md) 。
5、在 [脚本编辑器](脚本编辑器.md) 中插入以下代码:
```groovy
import readyapi.demo.Callee
// Call the class from the library and post the returned information to the log.
c = new Callee()
log.info c.hello()
```
6、点击 <img class="aqInlineImg" src="https://support.smartbear.com/readyapi/docs/_images/icon/run.png" > 运行脚本。
7、查看脚本日志,脚本应该输出以下信息:
```log
Tue Jan 1 10:56:08 EST 2018:INFO:Hello world!
```
## 修改库
让我们修改下上面的类,来返回不同的信息:
1、打开 `Callee.groovy` 文件。
2、使用下面的代码替换之前的代码:
```groovy
package readyapi.demo
// Create the Callee class to be called from ReadyAPI.
class Callee
{
String hello()
{
return "Hello world!"
}
String hello(String who)
{
return "Hello $who"
}
def static salute( who, log ) { log.info "Hello again $who!|" }
}
```
3、在你保存文件后,ReadyAPI 会自动检测变化,然后重新编译该文件。ReadyAPI 日志中将显示类似这样的信息:
~~~log
Tue Jan 1 10:56:08 EST 2018:INFO:C:\GroovyLib\readyapi\demo\Callee.groovy is new or has changed, reloading...
~~~
4、修改测试步骤中的脚本为:
~~~groovy
import readyapi.demo.Callee
// Call the class from the library and post the returned information to the log.
c = new Callee()
log.info c.hello("Mike")
~~~
5、点击 <img class="aqInlineImg" src="https://support.smartbear.com/readyapi/docs/_images/icon/run.png" > 运行脚本。
6、查看脚本日志,脚本应该输出类似信息:
~~~log
Tue Jan 1 10:56:08 EST 2018:INFO:Hello, Mike!
~~~
## 调用静态方法
你可以调用库中的静态方法,像下面这样:
~~~groovy
readyapi.demo.Callee.salute( "Mike", log )
~~~
或者
~~~groovy
import readyapi.demo.Callee
Callee.salute( "Mike", log )
~~~
运行后将输出:
~~~log
Tue Jan 1 10:56:08 EST 2018:INFO:Hello again Mike!
~~~
# 动态加载库
在运行时加载库:
~~~groovy
def project = testRunner.testCase.testSuite.project
// 加载库文件
project.scriptLibrary = "E:\\workspace\\groovy"
// 或者采用下面的写法
// project.setScriptLibrary("E:\\workspace\\groovy")
// 等待库文件加载完毕
Thread.sleep(12000)
~~~
参考资料:
1、[ReadyAPI Documentation / Testing APIs / Scripting / Script Libraries](https://support.smartbear.com/readyapi/docs/testing/scripts/library.html)
---
:-: --- 贡献者名单(排名不分先后) ---
:-: **材料**
:-: **编写**
李云
:-: **校验**
:-: **支持**
- 基础知识
- 属性
- 属性分类
- 属性扩展
- Get Data 对话框
- 断言
- 关于断言
- 使用断言
- 断言类型
- Response SLA
- Script
- Property Content Assertions
- Contains
- Equals
- Equals Binary
- JSONPath Count
- JSONPath Existence Match
- JSONPath Match
- JSONPath RegEx Match
- Message Content
- Not Contains
- XPath Match
- XQuery Match
- Compliance Assertions
- Swagger Compliance
- Schema Compliance
- HTTP Header Exists
- HTTP Header Equals
- JDBC Assertions
- 复制断言
- 术语
- 脚本
- 关于脚本
- 脚本编辑器
- JSONPath
- Projects
- SoapUI
- 测试步骤
- Groovy Script
- DataSource
- Conditional GoTo
- REST Request
- ReadyAPI
- 环境
- 关于环境
- 创建环境
- Rest Services
- Custom Properties
- JDBC Connections
- 团队协作
- 集成
- GitLab
- 第三方库
- Groovy 库
- Java 库
- 自定义ReadyAPI
- 首选项
- 全局属性
- ReadyAPI
- Code Templates
- JVM 设置
- 修改
- 实战指导
- 项目属性
- Groovy
- 代码片段
- 开发规范 v0.1
- 属性
- inbox
- FAQ
- 安装配置
- 复合工程
- 修改文件夹或文件名称