已知问题 - 函数库和用户定义的函数

相关项: GUI 测试和组件

本主题介绍使用函数库和用户定义的函数时的已知问题。

在函数中定义 VBScript 类

如果定义 VBScript 类,则只能在定义它的 OpenText Functional Testing 操作或函数库中调用它。

变通方法:

  1. 可以使用 ExecuteFile 语句来调用外部函数库中定义的 VBScript 类。

  2. 在定义类的函数库中,创建将对象设置为类的函数,并返回对象。然后,您可以从测试或组件的任意位置调用此函数,以将类的对象分配给定义的变量。

    示例:  

    假设您要使用类 myClass。在您定义 myClass 的同一函数库中,定义以下函数:

    public function myClassGenerator()
    set myClassGenerator = new myClass
    end function

    现在,您可以如下所示通过调用 myClassGenerator 使用 myClass 类:

    set myClassObject = myClassGenerator()

    myClassGenerator() 新建 myClass 对象并将其分配给 myClassObject

返回页首

调用由函数覆盖的测试对象方法

可以使用 RegisterUserFunc 语句注册将替代现有测试对象方法的用户定义函数。还可以注册用户定义函数,以覆盖使用 OpenText Functional Testing Extensibility SDK 创建的测试对象方法。如果替代此类型的测试对象方法,则用户定义函数不得(递归)调用它替代的测试对象方法。

返回页首

运行结果中的用户定义函数

默认情况下,测试运行之后,使用用户定义函数的步骤不包含在运行结果中。如果希望函数出现在运行结果中,必须将 ReportEvent Method 语句添加到函数代码中。例如,可能要提供其他信息或修改测试、组件或业务流程测试状态。

如果用户定义函数中的步骤调用标准 OpenText Functional Testing 测试对象方法,则测试运行后,此步骤将出现在运行结果中。但是,仍可以根据需要将 Reporter.ReportEvent 语句添加到函数代码中,以提供其他信息并修改测试、组件或业务流程测试状态。

返回页首

部分测试运行和方法注册

如果使用部分运行或调试选项(比如从该步骤运行从该步骤调试)以在测试步骤中(不在函数库中)执行方法注册之后的某个时间开始运行测试,OpenText Functional Testing 不会识别方法注册,因为它发生在当前测试运行开始之前。

返回页首

使用 Option Explicit 方法

要在与测试或组件关联的函数库中使用 Option Explicit 语句,必须将该语句包含在与测试或组件关联的所有函数库中。如果仅将 Option Explicit 语句包含在一些关联的函数库中,则 OpenText Functional Testing 忽略所有函数库中的所有 Option Explicit 语句。

在测试操作中,可以直接使用 Option Explicit 语句而没有任何限制。

返回页首

函数库中的唯一变量

每个函数库必须在其全局范围中有唯一的变量。如果两个关联的函数库使用 Dim 语句在全局范围内定义同一变量或定义两个同名常量,那么第二个定义引起语法错误。如果需要在全局范围内使用多个同名变量,则仅在最后一个函数库中包含 Dim 语句 (因为函数库以逆序加载)。

返回页首

函数库中的类定义

在同一测试运行中运行的函数库不得包含相同类的不同定义。确保每个类都只在一个位置定义。

返回页首

修改函数库

如果另一个用户修改了由测试或组件引用的函数库,或如果您使用外部编辑器(并非 OpenText Functional Testing)修改了函数库,那么更改只在重新打开测试或组件之后生效。

返回页首

西里尔字符

包含西里尔字符 且以 ANSI 编码保存的函数库在 OpenText Functional Testing 中可能无法正确解释。例如, 字符可能会被解释为换行字符,导致运行失败。

变通方法: 如果出现此问题,在文本编辑器用 Unicode 编码保存函数库以进行转换。

返回页首