本主题解释如何配置和应用 webMethods 工具,它允许您将 BrokerEvent 对象发布并发送到 Software AG webMethos Broker,以及订阅事件和调用本地 webMethods 集成服务器服务。本章包含:

使用代理

配置步骤根据您希望使用的执行模式(发布、订阅、请求/回复)而异。 

向类路径添加所需的 Jar 文件 

总是需要将以下 jar 文件添加到 SOAtest 类路径中:

  • wmbrokerclient.jar
  • g11nutils.jar

这些 jar 文件可以在 [webmethods install dir]/Broker/lib/下找到。有关更多详情,请参阅 webMethods Broker Client Java API Programmer's Guide> Getting Started> Using the webMethods Broker Java API。

在某些情况下,还需要 enttoolkit.jar 和 mail.jar。 

若要将这些 jar 文件添加到 SOAtest 类路径,请完成以下操作:

  1. 选择 Parasoft> Preferences
  2. 打开 Parasoft> System Properties 页面。
  3. 单击 Add JARS 按钮,选择并勾选需要添加的 JAR 文件。

使用发布执行模式

若要配置 webMethods 工具以发布 BrokerEvent 对象,请完成以下内容:

  1. 打开工具配置面板。
  2. 打开 Tool Settings 选项卡。
  3. 如下指定工具设置:
    1. webMethods 中,选择 Broker
    2. Execution mode 中,选择 Publish
    3. Host, Broker Name, Client Group,Client ID 字段中,指定连接到代理的设置。
    4. AppName 字段中,输入想要用来标识应用程序的任何名称(SOAtest)。
    5. 单击 Refresh。然后 Event Type 菜单将填充代理上可用的事件类型。
    6. (可选)在 Subscription Filter 中,指定筛选器字符串,以便仅检索具有所需字段值的事件。例如,您可以使用像
      my_Strin_field="some value" and my_int_value < 5
      之类的表达式。有关筛选器字符串语法的详细信息,请参阅 WebMethods 大力客户机 Java API 程序员指南“使用事件筛选器”一节。

    7. Event Type 中,选择要发布到的事件类型。
    8. 如果需要,在 Timeout 区域,定制超时周期和超时条件。
      • 如果选择了 Pass the test only if timeout occurred 选项,那么如果以指定的事件类型接收代理事件,则该工具将失败。这对于订阅错误事件类型和确保没有错误事件类型作为测试场景的一部分发布是非常有用的。
  4. 打开 Inputs 选项卡。
  5. 使用可用控件指定要发布的 BrokerEvent 对象。
    • 可用的选项(表单 XML、文字 XML、脚本化、表单输入)和相关控件与 SOAP 客户机工具和其他消息传递工具可用的选项相同。有关更多详情,请查阅 消息工具和响应器选项 。
    • 如果正在使用表单 XML、文本 XML或表单输入,并希望生成默认输入模板,请单击 Refresh
    • 在脚本模式中,可以直接操作对象(比如,如果想通过使用 webMethods API(而不是 GUI 或 XML 表示形式)编写脚本来设置字段值,那么可以这样做。有关更多详情,请查阅 Specifying Scripted Inputs and 扩展和脚本基础 。
    • 有关 BrokerEvent 对象的更多信息,请参阅 webMethods 代理客户机 Java API 程序员指南中的 COM.activesw.api.client.BrokerEvent 文档。

在测试执行期间,SOAtest 通过调用代理客户机 Java API 并为其提供 BrokerEventobject 来发布事件。订阅该事件类型的任何应用程序都将接收 SOAtest 发布的事件。 

若要查看发布事件的 XML 表示形式,请使用流量查看器工具,该工具自动链接到 webMethods 工具。注意,即使发送和接收了实际的 BrokerEvent 对象,查看器也使用 XML 表示。这使得阅读更容易,并允许您链接验证或处理内容的工具(例如 Diff 工具或 XML Assertor 工具)。 

使用订阅执行模式

若要配置 webMethods 工具以订阅 BrokerEvent 对象,请完成以下内容:

  1. 双击 webMethods Test Case Explorer 节点打开工具配置面板。
  2. 打开 Tool Settings 选项卡。
  3. 如下指定工具设置:
    1. webMethods 中,选择 Broker
    2. Execution mode 中,选择 Subscribe
    3. Host, Broker Name, Client Group,Client ID 字段中,指定连接到代理的设置。
    4. AppName 字段中,输入想要用来标识应用程序的任何名称(SOAtest)。
    5. 单击 Refresh。然后 Event Type 菜单将填充代理上可用的事件类型。
    6. Event Type 中,选择要订阅到的事件类型。
       



在测试执行期间,SOAtest 开始侦听发布到指定事件类型的事件。 

若要查看接收事件的 XML 表示形式,请使用流量查看器工具,该工具自动链接到 webMethods 工具。注意,即使发送和接收了实际的 BrokerEvent 事件对象,查看器也使用 XML 表示。这使得阅读更容易,并允许您链接验证或处理内容的工具(例如 Diff 工具或 XML Assertor 工具)。 

使用 Request/Reply 执行模式

若要配置 webMethods 工具来发送 BrokerEvent 对象,并在发送另一个对象之前等待回复,请完成以下内容:

  1. 双击 webMethods Test Case Explorer 节点打开工具配置面板。
  2. 打开 Tool Settings 选项卡。
  3. 如下指定工具设置:
    1. webMethods 中,选择 Broker
    2. Execution mode 中,选择 Request/Reply
    3. Host, Broker Name, Client Group,Client ID 字段中,指定连接到代理的设置。
    4. AppName 字段中,输入想要用来标识应用程序的任何名称(SOAtest)。
    5. 单击 Refresh。然后 Event Type 菜单将填充代理上可用的事件类型。
    6. Event Type 中,选择要发送到的事件类型。
  4. 打开 Inputs 选项卡。
  5. 使用可用控件指定要发送的 BrokerEvent 对象。
    • 可用的选项(表单 XML、文字 XML、脚本化、表单输入)和相关控件与 SOAP 客户机工具和其他消息传递工具可用的选项相同。有关更多详情,请查阅 消息工具和响应器选项 。
    • 如果正在使用表单 XML、文本 XML或表单输入,并希望生成默认输入模板,请单击 Refresh
    • 在脚本模式中,可以直接操作对象(比如,如果想通过使用 webMethods API(而不是 GUI 或 XML 表示形式)编写脚本来设置字段值,那么可以这样做。有关更多详情,请查阅 Specifying Scripted Inputs and 扩展和脚本基础 。
    • 有关 BrokerEvent 对象的更多信息,请参阅 webMethods 代理客户机 Java API 程序员指南中的 COM.activesw.api.client.BrokerEvent 文档。

在测试执行期间,SOAtest 通过调用代理客户机 Java API 并为其提供代理事件对象来发送请求,然后等待响应。 

若要查看请求和响应事件的 XML 表示形式,请使用流量查看器工具,该工具自动链接到 webMethods 工具。注意,即使发送和接收了实际的 BrokerEvent 对象,查看器也使用 XML 表示。这使得阅读更容易,并允许您链接验证或处理内容的工具(例如 Diff 工具或 XML Assertor 工具)。 

指定脚本输入

当发布到代理或使用脚本输入执行请求/应答时,将向您的自定义方法传递两个参数。第一个参数是您在工具设置中指定的类型名称的 BrokerEvent 对象。您需要用所需的输入值填充这个对象(有关如何完成此操作的详细信息,请参阅 webMethods 代理客户端 Java API 程序员指南),然后返回它。第二个参数是一个测试工具 com.parasoft.api.Context 对象。 

下面是一个示例 Jython 脚本:

from com.parasoft.api import *
from COM.activesw.api.client import *
 
def configureBrokerEvent(event, context):
    event.setUCStringField("s", "something")
    event.setIntegerField("i", 1)
    event.setUCStringSeqField("sl", 0, BrokerEvent.ENTIRE_SEQUENCE, BrokerEvent.AUTO_SIZE, ["one", "two", "three"])
    return event

使用集成服务器

向类路径添加所需的 Jar 文件

需要将以下 jar 文件添加到 SOAtest 类路径中:

  • wm-isclient.jar

该文件可在 [webmethods install dir]/common/lib/wm-isclient.jar下找到。若要将这个 jar 文件添加到 SOAtest 类路径,请完成以下操作:

  1. 选择 Parasoft> 首选项
  2. 打开 Parasoft> System Properties 页面。
  3. 单击 Add JARS 按钮,选择并勾选需要添加的 JAR 文件。

使用 SOAtest 和集成服务器

若要配置 SOAtest 来调用 webMethods IS(集成服务器)服务和接收响应:

  1. 双击 webMethods Test Case Explorer 节点打开工具配置面板。
  2. 打开 Tool Settings 选项卡。
  3. 如下指定工具设置:
    1. webMethods 中,选择 Integration Server
    2. Host, User,Password 字段中,指定连接到集成服务器的设置。
    3. 单击 Refresh。然后, Package 将填充集成服务器上可用的包。
    4. Package 中,选择包含要调用的服务的包。
    5. Service 中,选择要调用的服务。



  4. 打开 Input 选项卡。
  5. 使用可用控件指定将使用什么 iData 对象来调用该服务。
    • 可用的选项(表单 XML、文字 XML、脚本化、表单输入)和相关控件与 SOAP 客户机工具和其他消息传递工具可用的选项相同。有关更多详情,请查阅 消息工具和响应器选项 。
    • 如果正在使用表单 XML、文本 XML或表单输入,并希望生成默认输入模板,请单击 Refresh
    • 在脚本模式中,可以直接操作对象(比如,如果想通过使用 webMethods API(而不是 GUI 或 XML 表示形式)编写脚本来设置字段值,那么可以这样做。有关更多详情,请查阅 Specifying Scripted Inputs and 扩展和脚本基础 。
    • 有关 iData 对象的更多信息,请参阅 webMethods 集成服务器开发人员指南中的 com.wm.data.iData 文档。




在测试执行期间,SOAtest 发送 iData 对象来调用集成服务器服务并接收响应。

若要查看发送并接收对象的 XML 表示形式,请使用流量查看器工具,该工具自动链接到 webMethods 工具。这个 XML 表示使用 iData XML 编码格式。注意,即使发送和接收了实际的 iData 对象,查看器也使用 XML 表示。这使得阅读更容易,并允许您链接验证或处理内容的工具(例如 Diff 工具或 XML Assertor 工具)。 
 



指定脚本输入

当使用带有脚本输入的集成服务器服务时,您的自定义方法将被传递两个参数。第一个是 Idata 对象,您需要用所需的数据填充该对象,然后返回。第二个参数是一个 com.parasoft.api.Context 对象。 

下面是一个示例 Jython 脚本: 

from com.wm.app.b2b.client import * 
from com.wm.data import *
 
def buildIData(idata, context):
    IDataUtil.put(idata.getCursor(), "in1", "12")     
	IDataUtil.put(idata.getCursor(), "in2", "13")     
	return idata

访问会话 ID

会话 ID 将自动保存到 WebMethodsSessionId 上下文变量。可以使用 com.parasoft.api.Context.get(String key)(其中 String key 为  “WebMethodsSessionId")从扩展工具、脚本或自定义工具访问它。

例如,下面的扩展工具(使用 Groovy 脚本)访问存储在 sessionId 变量中的会话 id:

import com.parasoft.api.*
boolean useSessionId(input, context) {
    sessionId = context.get("WebMethodsSessionId")     
	Application.showMessage("sessionId = " + sessionId)
    // Put code here to do something with the session id    
	return true
}
  • No labels