本主题解释如何创建和应用扩展工具。该工具执行用 Java、JavaScript、Oracle Nashorn、Groovy、Jython 或其他实现 JSR 223 "Scripting for the Java Platform”规范的脚本引擎编写的自定义操作。
本章包含:
了解脚本/扩展工具
扩展工具允许您独立地实现自定义操作,或者与现有操作结合使用响应程序套件。 这个附加功能使您能够自定义 Virtualize 以满足您的特定需求,并且仅受您正在使用的脚本语言的功能的限制。
脚本可以接受零个、一个或两个参数。输出的源可以派生自客户机请求、服务器响应、另一个工具的输出、规则的元素,也可以由用户预先定义。如果想执行无法用规则表示的特定于应用程序的检查(例如,如果想检查给定输出是否与数据库中的记录匹配),这是非常有用的。或者您可以设计脚本来执行任何对您有用的特定功能。
如果您的方法接受零参数,那么在运行时选择什么文件并不重要。如果方法接受一个参数,则输入将从所选文件或附加到该参数的工具中提取。如果方法接受两个参数,那么第一个参数将取自文件或前面的工具,第二个参数将取自文件的上下文信息。有关可以应用的上下文参数类型的更多信息,请参见通过选择 Parasoft> Help> Scripting API 的脚本 API。
您还可以创建每次启动以下工具时执行的脚本Virtualize。 为此,创建一个 Jython 或 JavaScript 脚本,然后将其添加到以下代码中位置
<Virtualize_Installation_Directory>/plugins/com.parasoft.xtest.libs.web_<virtualize_version>/root/startup
创建自定义脚本/扩展工具
下面的过程描述如何向工具栏添加扩展工具。您还可以通过添加扩展工具在测试套件(在 SOAtest 中)或响应套件(在 Virtualize 中)中创建自定义方法,然后在扩展参数面板中完成相同的参数。
若添加自定义脚本/扩展工具到 SOAtest 或 Virtualize:
添加扩展工具。
双击扩展工具的 虚拟资产资源管理器节点。将在右侧打开工具配置面板。
- 在 Name 字段中为方法指定一个名称。
如果此工具的返回值标志着该工具的成功,则选择复选框中的 Exit code indicates success 选项。如果没有选中此复选框,则无论工具成功与否,方法的返回值都将被忽略。
- 从 Language 框中,选择您的方法正在使用或将要使用的语言。
- 在大文本字段中定义要实现的脚本。
- 针对 Java 方法,在 Class 字段中指定合适的类。注意,您选择的类必须位于类路径上(可以单击 Modify Classpath 链接,然后在显示的首选项页面中指定它)。如果想在修改和编译 Java 文件之后重新加载类,请单击 Reload Class 。
针对其他脚本,可以使用现有文件作为方法的源代码,也可以在负载测试工具中创建方法。
- 若要使用现有文件,选择 File 单选按钮并单击 Browse。从打开的文件选择器中选择文件,然后单击 OK 完成选项。
若要从头开始在 UI 中创建方法,选择 Text 单选按钮,并将代码键入、剪切或粘贴到相关量的文本框中。
若要选择合法且可运行的特定脚本,请右键单击 文件 或 text 文本字段(单击要用来指定脚本的一个),然后从快捷菜单中选择 Evaluate 。任何发现的问题都会报告。
- 单击 Evaluate 检查脚本是否会运行(不包含语法错误)。
- 在In the Error message 字段中,指定如果工具失败应报告什么错误消息。
- 从面板底部的 Method 框中选择适当的参数。这个列表将由脚本中包含的任何定义组成。由于脚本中可以包含多个参数,所以可以选择要在此方法中使用的一个参数。
在脚本中使用变量?
如果脚本返回包含 ${} 格式变量(如 ${value}
)的内容,则将在任何附加的输出工具处理该内容之前解析这些变量。如果不希望解析这些变量,请确保转义脚本中的变量。
例如,假设您的原始脚本有:
def handler(input, context) { def output = '{ "field": "${value}" }'; com.parasoft.api.Application.showMessage(output); return output; }
为防止 ${value}
被处理,可将 ${value} 修改为:
def handler(input, context) { def output = '{ "field": "${value}" }'; output = output.replace('${', '\\${'); com.parasoft.api.Application.showMessage(output); return output }
其他脚本资源
有关脚本功能及其各种应用程序的问题的概述,请参见 扩展和脚本基础。