本主题介绍如何创建和应用扩展工具。该工具执行用 Java、JavaScript、Oracle Nashorn、Groovy、Jython 或其他实现 JSR 223 "Scripting for the Java Platform”规范的脚本引擎编写的自定义操作。

章节目录:

了解脚本/扩展工具

扩展工具允许您独立地实现自定义操作,或者与现有操作结合使用测试套件或响应器套件。 该附加功能让您能够自定义  SOAtest 和 Virtualize 以满足您的特定需求,并且仅受您正在使用的脚本语言的功能的限制。 

脚本可以接受零个、一个或两个参数。输出的源可以派生自客户端请求、服务器响应、另一个工具的输出、规则的元素,也可以由用户预先定义。这对于执行无法用规则表示的应用程序特定检查(例如,如果想检查给定输出是否与数据库中的记录匹配)而言非常有用。或者您可以设计脚本来执行任何您认为有用的特定功能。

如果您的方法接受零参数,那么在运行时选择什么文件并不重要。如果方法接受一个参数,则输入将从所选文件或附加到该参数的工具中提取。如果方法接受两个参数,那么第一个参数将取自文件或前面的工具,第二个参数将取自文件的上下文信息。有关可以应用的上下文参数类型的更多信息,请选择 Parasoft> 帮助> 脚本 API 查看脚本 API。 

您还可以创建每次启动以下工具时执行的脚本SOAtest 和 Virtualize。 为此,请创建一个 Jython 或 JavaScript 脚本,然后将其添加到 <INSTALL>/plugins/com.parasoft.ptest.libs.web_<VERSION>/root/startup 目录中。

创建自定义脚本/扩展工具

下面的过程描述如何向工具栏添加扩展工具。您还可以通过添加扩展工具在测试套件(在 SOAtest 中)或响应套件(在 Virtualize 中)中创建自定义方法,然后在扩展参数面板中完成相同的参数。

若添加自定义脚本/扩展工具到 SOAtest 或 Virtualize:

  1. 添加扩展工具,可使用 端到端的测试场景中描述的方法之一进行添加。

  2. 双击扩展工具的 测试用例浏览器或虚拟资产浏览器节点。将在右侧打开工具配置面板。

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

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

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

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

  7. 点击评估检查脚本是否会运行(不包含语法错误)。
  8. 错误消息字段中,指定如果工具失败应报告什么错误消息。
  9. 从面板底部的方法框中选择适当的参数。这个列表将由脚本中包含的任何定义组成。由于脚本中可以包含多个参数,所以可以选择要在此方法中使用的参数。

在脚本中使用变量?

如果脚本返回包含 ${} 格式变量(如 ${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
}

其他脚本资源

有关脚本功能及其各种应用程序的问题的概述,请参阅扩展和脚本基础。有关如何在 SOAtest 中应用自定义脚本的逐步演示,请参阅使用脚本扩展 SOAtest



  • No labels