本主题解释如何创建和应用扩展工具。该工具执行用 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:

  1. 添加扩展工具。

  2. 双击扩展工具的 虚拟资产资源管理器节点。将在右侧打开工具配置面板。

  3. Name 字段中为方法指定一个名称。
  4. 如果此工具的返回值标志着该工具的成功,则选择复选框中的 Exit code indicates success 选项。如果没有选中此复选框,则无论工具成功与否,方法的返回值都将被忽略。

  5. 从 Language 框中,选择您的方法正在使用或将要使用的语言。
  6. 在大文本字段中定义要实现的脚本。
    • 针对 Java 方法,在 Class 字段中指定合适的类。注意,您选择的类必须位于类路径上(可以单击 Modify Classpath 链接,然后在显示的首选项页面中指定它)。如果想在修改和编译 Java 文件之后重新加载类,请单击 Reload Class
    • 针对其他脚本,可以使用现有文件作为方法的源代码,也可以在负载测试工具中创建方法。

      • 若要使用现有文件,选择 File 单选按钮并单击 Browse。从打开的文件选择器中选择文件,然后单击 OK 完成选项。
      • 若要从头开始在 UI 中创建方法,选择 Text 单选按钮,并将代码键入、剪切或粘贴到相关量的文本框中。

      • 若要选择合法且可运行的特定脚本,请右键单击 文件text 文本字段(单击要用来指定脚本的一个),然后从快捷菜单中选择 Evaluate 。任何发现的问题都会报告。

  7. 单击 Evaluate 检查脚本是否会运行(不包含语法错误)。
  8. 在In the Error message 字段中,指定如果工具失败应报告什么错误消息。
  9. 从面板底部的 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
}

其他脚本资源

有关脚本功能及其各种应用程序的问题的概述,请参见 扩展和脚本基础



  • No labels