如何使用函数 QTP/UFT 在3 Easy Steps中

⚡ 智能摘要

函数在 QTP/UFT 允许测试人员将可重用的 VBScript 逻辑打包到任何测试都可以调用的库文件中,从而减少重复代码,简化维护并加快自动化开发速度。 UFT 和 QTP 项目。

  • 📚 定义: 函数库是一个包含可重用 VBScript 函数的 .qfl 或 .vbs 文件。 UFT 测试可以调用。
  • 🛠️ 创建: 从“文件”>“新建”>“函数库”创建一个库,并在其中编写标准的VBScript函数…结束函数块。
  • 🔗 协会: 通过文件 > 设置 > 资源 > 关联函数库来附加库,以便将其函数暴露给测试。
  • ▶️ 致电: 通过 ty 调用库函数ping 它的名称及其在测试脚本中的参数,就像内置函数一样 UFT 语句。
  • 🗂️ 文件格式: 选择 .qfl 作为原生格式 UFT 编辑器或 .vbs 可生成纯文本文件,该文件可在任何地方读取,包括版本控制系统。
  • ⚙️ 运行时加载: 使用 LoadFunctionLibrary 或 ExecuteFile 以编程方式附加库,而不是使用“资源”对话框。
  • 🧭 命名规范: 为所有关联的库中的每个函数指定一个唯一的名称,因为 UFT 当名称冲突时,执行最后加载的定义。
  • 📊 报告: 替换消息Box 使用 Reporter.ReportEvent 进行调用,因此通过、失败和警告状态会直接显示在内部。 UFT 结果树。

如果你的测试中需要多次使用某些代码片段,那么创建用户自定义函数或许是个不错的选择。使用用户自定义函数可以缩短测试代码,使其更易于设计、阅读和维护。

在 Micro Focus 中创建您自己的函数库 UFT 可以包含 VBScript中 函数,子程序,模块等

在测试中使用库中的函数,只需遵循 3 个简单的步骤即可。

函数库与……不同 行动 in UFT一个函数没有自己的对象库或数据表,但一旦关联了库,任何操作或测试都可以调用它。

将相同的步骤复制粘贴到每个操作中会成倍增加维护工作量,因为这样一来,每次更改都需要在所有副本中重复执行。函数库通过将这些逻辑集中在一个地方来解决这个问题,项目中的任何操作或测试都可以调用该函数库。

三个简单步骤即可使用库中的函数 UFT/QTP

步骤1) 创建一个新的函数库 UFT or QTP 选择“文件”>“新建”>“函数库”。它会在新标签页中打开。 QTP.

让我们创建一个非常简单的函数来显示一个消息框。

Function Demo

MsgBox "This is a Test Function"

End Function

每次调用此函数时,都会弹出一个消息框。一个文件可以包含多个函数,因此只需保存一次文件,即可在多个测试中重复使用。 UFT 保存一个带有 a 的函数库 .qfl 默认情况下是扩展名,尽管是一个普通的扩展名。 .vbs 文件也可以,下一节会对此进行说明。

步骤2) 将库与测试关联。打开“文件”>“设置”>“资源”>“关联函数库”,然后单击。 添加选择函数库文件,然后单击 OK.

步骤3) 最后一步是在测试脚本中调用该函数。一旦关联了库,调用函数就非常简单了。ping 其名称并传递任何必需的参数,如下所示。

' Call the function from the associated library
Demo()

UFT 定位 演示 在关联的库中运行它,就像是在测试内部本地编写一样。

重要注意事项

  • 利用 COM 和 DCOM 对象,您可以创建非常高级的功能。
  • 事实上,许多功能都由 QTP 可以使用VBScript编写代码。
  • 我们看到自动化工程师们把它变成了一个 VB 项目,而不是自动化项目
  • 我们的建议是专注于 100% 自动化,而不是炫耀你的 VB 技能

点击 开始 如果视频无法访问

函数库文件类型:.qfl 与 .vbs

UFT 它不会强制你使用单一的文件格式来保存函数库。函数库编辑器会将新文件保存为…… .qfl 默认情况下是扩展名,并且 UFT 也接受纯文本 .vbs 文件是在任何代码编辑器中创建的,因为 QTP/UFT 函数库只不过是存储在磁盘上的普通 VBScript 代码;这两种格式在运行时表现完全相同。

方面 .QFL 文件 .VBS 文件
创建 UFT 函数库编辑器 任何文本或代码编辑器
向外敞开 UFT 没有 是的,以纯文本形式。
版本控制友好性 有限 更好,因为差异是可读的。
关联方法 两者相同 两者相同

选择主要取决于团队工作流程,而非功能。一个快速构建的一次性库 UFT 运行良好 .qfl而使用 Git、SVN 或其他版本控制系统维护的库通常会被保存为 .vbs 文件,因为纯文本格式在代码审查过程中能生成更易读的差异对比。两种格式都支持完整的 VBScript 功能集,包括类、错误处理和 COM 对象创建,并且都以完全相同的方式与测试关联,下一节将对此进行解释。

重命名文件扩展名不会改变文件内容,因此转换现有文件扩展名并不会改变文件内容。 .qfl 文件以 .vbs或者反过来,只是重命名文件,然后将重命名后的文件与测试重新关联。

将函数库与测试关联起来的方法

上述步骤 2 使用了“资源”对话框,但是 UFT 实际上,它提供了几种将函数库与测试关联起来的方法,选择合适的方法取决于这种关联是永久性的还是仅适用于单次运行。一个测试可以同时关联多个库。 UFT 按资源列表中出现的顺序加载它们。

  1. 关联函数库对话框(图形用户界面): 打开文件 > 设置 > 资源 > 关联函数库,点击添加,然后选择文件。 UFT 将此关联存储在测试本身中,因此每次打开测试时库都会自动加载。这就是上面步骤 2 中所示的方法,对于项目中每个测试都需要的任何库来说,这都是一个很好的默认选择。
  2. LoadFunctionLibrary 语句: 在脚本内部调用 LoadFunctionLibrary “path” 以在运行时附加库,而无需触及“资源”对话框。 UFT 在本次运行的剩余时间内,它将库视为基于对话框的关联,这在动态确定库路径时非常方便。
  3. ExecuteFile 语句: ExecuteFile “path” 运行一个脚本文件并将其函数暴露给当前运行环境,但是 UFT 未将文件注册为 trac由于是 ked 资源,因此它永远不会出现在测试设置的“关联函数库”下。
  4. 自动化对象模型(AOM): 外部 VBScript 文件可以启动 UFT打开一个测试,然后以编程方式将库添加到 `Test.Settings.Resources.Libraries` 中。构建或部署脚本通常使用这种方法,一次性为数十个测试配置同一个库。
' Load a library at run time from inside a script
LoadFunctionLibrary "C:\Automation\CommonFunctions.qfl"

' ExecuteFile works the same way, but UFT does not
' track the file as an associated resource
ExecuteFile "C:\Automation\CommonFunctions.qfl"

无论选择哪种方法,对于 GUI 和 AOM 方法,每个测试只需关联一次库,而 LoadFunctionLibrary 和 ExecuteFile 每次脚本执行时都必须重新运行,因为它们是普通的 VBScript 语句,而不是保存的设置。

当不再需要某个库时,请将其从资源列表中删除,而不是保留其关联状态,因为未使用的库仍然可能会掩盖您稍后添加到另一个库中的同名函数。

写作的最佳实践 UFT/QTP 函数库

只有当整个团队都能信任并维护函数库时,它才能真正发挥作用。以下这些习惯能够确保函数库在发展过程中保持可靠性。

  • 使用 Option Explicit: 将其添加为每个库的第一行 UFT 标记拼写错误的变量,而不是默默地创建一个新变量。
  • 保持函数名称唯一: 如果两个关联的库定义了一个同名函数, UFT 调用最后加载的那个,因此重复的名称会导致静默调用,难以发现。trac虫子。
  • 返回值而不是硬编码: 接受参数并返回结果,如下例所示,因此同一个函数可以用于多个测试而不是一个测试。
  • 避免发送短信Box 在制作脚本中: 消息框会暂停执行,直到有人点击“确定”。 记者.报告事件 相反,通过、失败和警告状态会直接记录到结果树中,而无需停止。ping 跑步。
  • 按领域分组,而不是按方便分组: 将登录功能、数据库功能和 UI 辅助功能放在不同的文件中,以便任何测试都可以只关联它实际需要的功能。
  • 对库文件进行版本控制: 将函数库文件存储在与自动化项目其余部分相同的存储库中,以便回滚项目时也能还原任何共享函数。
Function AddNumbers(ByVal num1, ByVal num2)
    AddNumbers = num1 + num2
End Function

Dim result
result = AddNumbers(10, 20)
Reporter.ReportEvent micPass, "Sum Calculation", "The result is " & result

及早养成这些习惯成本不高,但以后再将它们应用到大型、管理不善的图书馆中则要昂贵得多。

常见问题

函数可以向调用者返回值,而子程序则不能。当脚本需要返回结果时,例如计算值或通过/失败标志,请使用函数;对于独立操作,例如单击按钮,请使用子程序。

UFT 不会引发错误。它会静默调用最后加载的定义,调用顺序取决于资源设置中库的出现顺序,因此两个库中相同的名称可能会导致混淆,难以理解。trace 结果。

是的。一旦这两个库都与同一个测试关联起来, UFT 将它们的所有函数加载到一个共享命名空间中,因此一个库中的任何函数都可以调用另一个库中定义的函数。

是的。人工智能助手可以根据所需步骤的纯文本描述生成 VBScript 函数,但测试人员在使用前仍应检查生成的代码,确保对象引用和错误处理正确。

AI 工具可以将 VBScript 逻辑转换为其他语言,例如 Python or Java 这只是个草稿,但质量保证工程师必须验证对象标识和业务逻辑,因为自动翻译很少能完美地保留这两点。

总结一下这篇文章: