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

相关项: 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 编码保存函数库以进行转换。