本主题解释了如何使用自定义工具扩展 SOAtest 和 Virtualize。 章节目录: SOAtest 和 Virtualize 包括添加自定义工具的框架。自定义工具可配置来执行输入上的自定义执行。例如,自定义工具可以修改变量,或删除浏览器 cookie。 设置好自定义扩展的环境后,请实现以下接口(Extensibility API 文档中有作说明): 这是一个必需的类,将用于实现工具执行逻辑。该接口有三种实现方法: 您将使用 execute() 方法实现工具的执行逻辑,该方法为您提供了一个 IToolInput 和 IToolContext。IToolInput 包含发送到工具的输入消息,例如 XML 或来自请求或响应的通讯报文。上下文提供对 UI 配置和输出管理器的访问。返回 true 表示工具执行成功,而 false 表示工具执行失败。 输出管理器可用于将 IToolInput 发送到连接到自定义工具实例的工具。您可以构建自己的 IToolInput 实现,也可以使用 Parasoft 提供的默认实现。 例如,假设您在 parasoft-extension.xml 中定义了两个输出: 在 SOAtest 或 Virtualize 中,您可以选择自定义工具,点击添加测试或输出(SOAtest)或添加响应器或输出(Virtualize),然后将工具添加到所选输出。下面是一个构造输入并将其传递给链式输出工具的例子: 如果在工具执行过程中遇到错误,应该使用 IToolContext.report(String) 报告一个或多个错误。如果遇到阻止工具执行完成的致命错误,则应抛出 CustomToolException 异常;这将中止该工具的执行并导致其失败,此外还会中止场景执行(如果场景被设置为在出现致命错误时中止)。以任何一种方式报告的错误都将报告给质量任务视图。 要实现的其他方法: 在处理 IToolInput 时,需要检查传递给工具的特定类型的 IToolInput。在大多数情况下, SOAtest or Virtualize 将传递 IToolInput 子接口的实例。但是,在某些情况下,可能无法将输入转换为 IToolInput 更特定的子接口。在这些情况下,一个简单的 IToolInput 将传递给工具。IToolInput 没有方法,但是有一种可以访问正在使用的内部对象的方法。所有 Itoolinput 都是一个名为 com.parasoft.tool.IToolInputWrapper 内部接口的实例。您可以转换到该接口,然后调用 gettoolavailable() 方法来访问正在使用的内部对象。 当将输入传递到自定义工具的输出时,可能会发生类似的情况。您可能需要从内部 API 传递一个对象,而不是从 IToolInput 更具体的子接口的实例中传递。在这种情况下,您将返回内部接口 com.parasoft.tool.IToolInputWrapper 的一个实例,它返回 com.parasoft.tool.ToolUsable。 实现必要类后,如下定义 parasoft-extension.xml: 此元素对于此扩展类型是唯一的,并且对于要导入的自定义工具必须是有效且正确的。 属性: icon - 可选属性,允许您提供自定义图标的名称,该图标将显示在菜单中工具名称旁,以及测试用例浏览器(SOAtest)或虚拟资产浏览器(Virtualize)中使用该工具的资产旁。如果没有提供,将使用默认图标。 此元素对于此扩展类型是唯一的,并且对于要导入的自定义工具必须是有效且正确的。定义自定义工具的 input 字段。 属性: 如果希望 GUI 字段用作密码字段(输入屏蔽和安全保存特定密码),请给该字段元素一个 如果希望 GUI 字段实现为 Xpath 选择器,请该字段设置一个设置为 xpath 的 可以使用 验证是否已经创建新工具,并在其他 Parasoft 定义的工具中列出。关于自定义工具
为自定义工具实现的接口
ICustomTool 实现
<output key="output_1" name="traffic header"/>
<output key="output_2" name="traffic body"/>
public boolean execute(IToolInput input, IToolContext context) throws CustomToolException
{
String charset ="UTF-8";
String mimeType ="text/plain";
String header ="";
String message ="";
. . .
DefaultTextInput headerOutput = new DefaultTextInput(header, charset, mimeType);
context.getOutputManager().runOutput("output_1", headerOutput, context);
. . .
DefaultTextInput msgOutput = new DefaultTextInput(message, charaset, mimeType);
context.getOutputManager().runOutput("output_2", msgOutput, context);
. . .
return true;
}
定义自定义工具的 parasoft-extension.xml
<?xml version="1.0" encoding="UTF-8"?>
<extension xmlns="urn:ocm/parasoft/extensibility-framework/v1/extension"
type="tool"
name='the name of your tool, appears in menus'
description='A more detailed description'>
<class>com.myCompany.MyTool</class> <!-- implements ICustomTool -->
<version id='your version ID' updaterClass="com.myCompany.myUpdater"/>
<tool xmlns="http://schemas.parasoft.com/extensibility-framework/v1/tool"
icon="myIcon.gif"
useInputTab="true"
successIndicator="true"
category="myCategory"
supportXmlConversion="true"
showInToolList="common"
showInOutputList="common">
<outputs>
<output key="key" name="output name"/>
...
</outputs>
</tool>
<form xmlns="urn:com/parasoft/extensibility-framework/gui">
<section label="field group 1">
<field id="key 1" label="field 1"/>
<field id="key 2" label="field 2"/>
<field id="element" label="Select an element" type="xpath"/>
</section>
<section label="field group 2">
<field id="key 3" label="field 1"/>
<field id="usr" label="Username"/>
<field id="pwd" label="Password" type="password"/>
. . .
</section>
. . .
</form>
</extension>
<tool> Element
<form> Element
string
(普通字段)、xpath
(提供 XPath Chooser 功能)或 password
(在键入时隐藏值,保存时加密值)。提示
type
属性。这可以设置为:string
: 一个普通字段。xpath
: 提供 XPath Chooser 功能。password
: 在键入时隐藏值,保存时加密值。type
属性,并将其设置为 password
。例如,下面将 pwd
字段设置为密码模式:<form xmlns="urn:com/parasoft/extensibility-framework/gui">
<section label="Main Settings">
<field id="usr" label="Username"/>
<field id="pwd" label="Password" type="password"/>
</section>
</form>
type
元素。例如,下面将 element
字段设置为 XPath 选择器:<form xmlns="urn:com/parasoft/extensibility-framework/gui">
<section label="Main Settings">
<field id="element" label="Select an element" type="xpath"/>
</section>
</form>
supportXmlConversion
选项。工具用户将能够在工具的配置面板中选择所需的消息格式。此外,如果实现了 XPath 选择器(见上面),则它的树视图将以适合所选消息类型的格式显示消息。(注意,消息格式是在工具配置面板的消息格式部分设置的)。 ${var_name}
语法引用扩展 GUI 字段中的数据源、数据库值、环境变量和测试或响应器套件变量。批准的“参数化”和“脚本化”GUI 控件还可用来参数化字段。验证新工具
Overview
Content Tools