在 Docker 容器中运行 UFT One 测试

使用 UFT One Docker 镜像可加快 UFT One 维护和测试运行的速度。

本主题假定您具有 Docker 管理方面的一些知识,因此未详细描述 Docker 管理步骤。

可用的 UFT One Docker 镜像

使用 UFT One Docker 镜像在 Docker 容器中运行 UFT One 测试。镜像可从 https://hub.docker.com/r/functionaltesting/ 获得。

UFT One 镜像支持以下功能:

  • 使用 Digital LabUFT One 自动化脚本运行移动测试。
  • 在 Windows Docker 环境中运行 API 测试。
  • 使用 UFT One 自动脚本在 Headless Chrome 上运行测试。
  • 在 Linux Docker 环境中运行 API 测试。

以下镜像适用于当前 UFT One 版本:

  • uft 镜像是安装了 UFT One 的完整 Windows Docker 镜像。

  • uft_utils 镜像基于 uft 镜像,但还包括其他实用程序工具。

  • uft_one_for_api_tests 镜像是安装了 UFT One 运行时引擎的、基于 Linux 的镜像。

使用 UFT One 实用程序 Docker 镜像的优势

uft_utils 镜像启用以下增强功能:

更简单的测试运行 使用单个命令在 Windows Docker 环境中更流畅、更轻松地运行 UFT One 测试。
运行多个 API 测试 您现在可以使用一个 Docker 命令来运行存储在指定文件夹中的所有 API 测试。
将运行结果转换为 JUnit 报告 测试运行后,使用 ReportConverter 实用程序根据运行结果创建 JUnit 报告。
在 CI-CD 管道中使用 Docker 镜像 使用 Docker 镜像中包含的实用程序工具,从 CI-CD 管道对 Docker 镜像运行测试。

UFT One 实用程序 Docker 镜像比 uft 镜像发布更频繁。有关使用此镜像的说明,请使用 Docker Hub 上随该镜像提供的文档。

返回页首

Windows Docker 镜像的系统要求

您可以在以下操作系统之一的 Windows Docker 容器中运行 UFT One 测试:

  • Windows Server 2016

  • Windows 10

    版本: 2004、1903、1803

返回页首

概述: 使用 UFT One 的 Docker 镜像

要在 Docker 容器中运行 UFT One 测试,您必须执行以下步骤,下面将对这些步骤进行详细说明:

  1. 从 Docker Hub 拉取 UFT One Docker 镜像。
  2. 根据该 Docker 镜像创建一个容器。
  3. 在容器中安装并发 UFT One 许可证。
  4. 在 Docker 容器中运行 UFT One 测试。

必须在您使用的每个 UFT One Docker 容器中安装一个 UFT One 许可证。可以采用以下方式之一进行处理:

  • 安装 UFT One 许可证后,可以将此容器提交到新镜像。然后,根据新镜像创建所有后续容器,并避免安装其他许可证。

  • 安装 UFT One 许可证后,使用同一容器进行后续运行,并根据需要停止和启动该容器。

  • 使用 Docker 命令创建新容器,安装并发许可证,然后运行测试。

返回页首

创建 UFT One Docker 容器之前

此部分描述如何准备设置 UFT One Docker 容器。

先决条件

  1. 在您的计算机上安装并设置 Docker,以便它可以从 Docker Hub 提取 Docker 镜像。这会将您的计算机设为 Docker 主机

    按照 Microsoft 文档中所述安装 Docker 引擎和客户端。

    有关设置 Docker 的详细信息,请参阅 Docker 文档。

  2. 在您的计算机上启用硬件和软件虚拟化。

  3. 确保您的 Docker 配置为运行正确类型的容器。

    右键单击 Docker 托盘图标。如果菜单选项中显示“切换到 Linux 容器”,则表示您的 Docker 已针对 Windows 容器进行了设置。

拉取 UFT One Docker 镜像

要拉取 UFT One Docker 镜像,请在主机计算机的命令窗口中运行以下命令:

docker pull <UFT One Docker 镜像名称>[:tag]

UFT One Docker 镜像名称可以是 functionaltesting/uftfunctionaltesting/uft_utilsfunctionaltesting/uft_one_for_api_tests。根据 可用的 UFT One Docker 镜像 中的镜像描述选择要使用的镜像。

[:tag] 是要为特定 UFT One 镜像版本添加的可选标志。默认情况下,标记值为 Latest

返回页首

设置 Windows Docker 容器

此部分介绍如何设置 UFT One Windows Docker 容器:

  1. 要从拉取的 UFT Docker 镜像创建 Docker Windows 容器,请在主机计算机的命令窗口中运行以下命令:

    docker run -it --name <容器名称> <UFT One Docker 镜像名称>[:tag] "cmd.exe"

    该命令创建容器,并打开属于该容器的命令窗口。在下一步中使用此窗口来安装 UFT One 许可证。

    备注: UFT One Docker 镜像基于 Windows Server 2016。如果您将 Docker 主机与其他操作系统一起使用,则可能会收到有关操作系统不兼容的消息。请查阅 Docker 文档以缓解此问题。例如,将
    --Isolation=hyperv-–isolation=process 添加至命令可能会解决问题。

在 Windows Docker 容器中安装 UFT One 许可证

UFT One Docker 镜像仅支持并发许可证,每次 Docker 容器使用 UFT One 时,都会从服务器中使用许可证。

在 Docker 容器的命令窗口中,在容器中安装并发 UFT One 许可证。有关详细信息,请参阅使用命令行管理许可证

返回页首

在 Windows Docker 容器中运行移动测试

安装并配置 Windows Docker 容器后,设置 UFT One-Digital Lab 集成,创建 UFT One 自动脚本,然后在 Docker 容器中运行脚本。

配置集成

要在移动设备上运行 UFT One 测试,请确保为集成设置了 Digital Lab 和应用程序。有关详细信息,请参阅设置 Digital Lab 以与 UFT One 集成

您在下一步中创建的 UFT One 自动脚本将建立与 Digital Lab 的连接。

创建 UFT One 移动自动化脚本

在 Docker 容器中运行 UFT One 测试是通过 UFT One 自动脚本完成的,该脚本包含在 Digital Lab 中运行测试所需的具体步骤。

您的脚本应包括以下部分:

  • 启动 UFT One
  • 使用 DLConnection 对象配置 UFT OneDigital Lab 的连接。
  • 使用“启动”方法启动应用程序。
  • 运行 UFT One 测试。
  • 关闭测试。
  • 关闭 UFT One

以下是用于在 UFT Digital Lab 中运行特定测试的示例脚本:

Dim qtApp 'As QuickTest.Application ' Declare the Application object variable
Set qtApp = CreateObject("QuickTest.Application")
qtApp.Launch
qtApp.Visible = True
qtApp.Options.DLConnection.Server = "<UFT Digital Lab 服务器地址>"
qtApp.Options.DLConnection.Port = "<UFT Digital Lab 服务器端口>"
qtApp.Options.DLConnection.Username = "<UFT Digital Lab 服务器用户名>"
qtApp.Options.DLConnection.Password = "<UFT Digital Lab 服务器用户密码>"
qtApp.Options.DLConnection.UseSSL = false
qtApp.Options.DLConnection.SharedSpace = "<UFT Digital Lab 服务器租户 ID>"
qtApp.Options.DLConnection.WorkSpace = "<UFT Digital Lab 服务器工作区 ID>"
qtApp.Options.DLConnection.ShowRemoteWndOnRun = true
qtApp.Open "<UFT 脚本路径>", True
Set qtMobileLauncher = qtApp.Test.Settings.Launchers("Mobile")
qtMobileLauncher.Lab = "DigitalLab"
qtMobileLauncher.Device.OS = "<设备操作系统类型>"
qtMobileLauncher.Device.ID = "<设备 UDID>"
Set launchApp = qtMobileLauncher.LaunchOnStart
launchApp.IsPackaged = True
launchApp.Counter = 1
qtMobileLauncher.InstallApps = true
qtMobileLauncher.RestartApps = true
qtMobileLauncher.UninstallApps = false
qtMobileLauncher.TrackCPUMetric = true
qtMobileLauncher.TrackMemoryMetric = true
qtMobileLauncher.TrackFreeMemoryMetric = true
qtMobileLauncher.TrackLogs = true
Set qtpResultsOpt = CreateObject("QuickTest.RunResultsOptions") 'create the run Results Options object
qtpResultsOpt.ResultsLocation = "<HTML 报告路径>"
qtApp.Test.Run qtpResultsOpt ' Run the test
qtApp.Test.Close
qtApp.Quit

备注: 如果您复制此文本以在自动脚本中使用,请确保将 UFT Digital Lab 服务器连接详细信息的占位符替换为 UFT Digital Lab 服务器中的值。

有关更多详细信息,请参阅:

在 Docker 容器中运行自动化脚本

在主机计算机上的命令窗口中,运行以下命令:

docker run -it --name <容器名称> -v <主机目录>:<容器目录> <UFT One Docker 镜像名称>[:tag] cmd //Add [:tag] to specify a UFT image version.Default is 'latest'.

cd <容器目录>

<脚本名称>.vbs //Run the automation script

其中:

参数名 描述

<容器名称>

Docker 容器的名称。使用唯一的容器名称创建新的容器。
<主机目录>

存储自动脚本的计算机上主机目录的完整路径。

该目录已装载到 Docker 容器中的 <容器目录> 位置。

<容器目录> Docker 容器中装载 <主机目录> 的目录的完整路径。
<UFT One Docker 镜像名称>

UFT One Docker 镜像名称为 functionaltesting/uft

<脚本名称> 配置为运行 UFT One 测试的 UFT One 自动脚本的名称。

备注: 包含用于特定 UFT One 镜像版本的可选 [:tag]。默认情况下,标记值为 Latest

返回页首

在 Windows Docker 容器中运行 API 测试

采用下述的一种方式运行 UFT One API 测试。

先决条件

  • 设置一个如上所述的 UFT One Docker 容器。
  • 在主机计算机上,为 API 测试创建本地目录,并将测试文件夹存储在该目录中。Docker 会将该目录装载到 Docker 容器中的目录。

在新容器中运行测试

根据您创建的安装了 UFT One 许可证的镜像在新容器中运行测试。

在主机计算机上的命令窗口中,运行以下命令:

docker run -v <:主机测试目录>:<容器测试目录> --name <容器名称> <具有许可 uft 的镜像> "<UFT One 安装文件夹>\bin\HP.ST.Fwk.InternalExecuter.exe" -test <容器测试目录> -reportPath <报告目录路径>

其中:

参数名 描述

<容器名称>

要为此运行创建的 Docker 容器的名称。

使用唯一的容器名称创建新的容器。

<主机测试目录>

主机计算机上 API 测试的完整路径。

该目录已装载到 Docker 容器中的 <容器测试目录> 位置。

示例:C:\DockerProject\tests\apitest,其中 C:\DockerProject\tests 是您为测试创建的本地目录,apitest 是存储在其中的测试的名称。

注: 此路径的测试名称部分区分大小写。

<具有许可的 uft 的镜像> 安装 UFT One 许可证后提交的镜像。该镜像用于生成运行您的测试的新容器。
<容器测试目录> Docker 容器中装载 <主机测试目录> 的目录的完整路径。
<报告目录路径>

(可选) 存储测试结果的目录的路径。提供相对于“<容器测试目录>”的相对路径。

默认情况下,结果保存在测试文件夹下,覆盖以前的所有运行结果。

例如,如果主机测试目录为 C:\DockerProject\tests,测试名称为 apitest ,则命令将如下所示:

docker run -v C:\DockerProject\tests\apitest:C:\tests\apitest --name apirun functionaltesting/uft:latest "C:\Program Files (x86)\OpenText\UFT One\bin\HP.ST.Fwk.InternalExecuter.exe" -test C:\tests\apitest

在现有容器中运行测试

在主机计算机上的命令窗口中,运行以下命令:

docker exec -it <容器名称> "<UFT One 安装文件夹>\bin\HP.ST.Fwk.InternalExecuter.exe" -test <容器测试目录> -reportPath <报告目录路径>

其中:

参数名 描述

<容器名称>

用于此运行的现有 Docker 容器的名称。

提示: 在运行此命令之前,确保容器正在运行。

<容器测试目录> Docker 容器中装载 <主机测试目录> 的目录的完整路径。
<报告目录路径>

(可选) 存储测试结果的目录的路径。提供相对于“<容器测试目录>”的相对路径。

默认情况下,结果保存在测试文件夹下,覆盖以前的所有运行结果。

例如,如果容器名称为 apirun,主机测试目录为 C:\DockerProject\tests,测试名称为 apitest,则命令将如下所示:

docker exec -it apirun "C:\Program Files (x86)\OpenText\UFT One\bin\HP.ST.Fwk.InternalExecuter.exe" -test C:\tests\apitest -reportPath result1

返回页首

使用 Jenkins 在 Windows Docker 容器中触发 API 测试运行

设置 Windows Docker 容器后,可以使用 Jenkins 触发 UFT One API 测试运行:

  1. 在主机计算机上,为 API 测试创建本地目录,并将测试存储在该目录中。

  2. 在 Jenkins 中将 Docker 容器添加为从属容器。

  3. 添加一个构建步骤,然后选择“执行 Windows 批处理命令”。

  4. 在该步骤中,插入命令以触发测试。执行以下某项操作: 

    • 根据安装许可证后提交的 UFT One Windows Docker 镜像创建新的容器,然后运行 API 测试。

      docker run -v <:主机测试目录>:<容器测试目录> --name <容器名称> <具有许可 uft 的镜像> "<UFT One 安装文件夹>\bin\HP.ST.Fwk.InternalExecuter.exe" -test <容器测试目录> -reportPath <报告目录路径>

    • 根据下载的 UFT One 镜像创建新的容器,在容器中安装并发许可证,然后运行 API 测试:

      docker run -dit --name <容器名称> -v <主机测试目录>:<容器测试目录> <UFT One Docker 镜像名称>[:tag] cmd.exe /C " " <UFT One 安装文件夹>/bin/HP.UFT.LicenseInstall.exe" concurrent <许可证 ID> <许可证版本> <主服务器名称/地址>:<端口> & "<UFT One 安装文件夹>/bin\HP.ST.Fwk.InternalExecuter.exe" -test <容器测试目录> -reportPath <报告目录路径>

    有关此命令的详细信息,请参阅在 Windows Docker 容器中运行 API 测试

返回页首

在 Windows Docker 容器中运行 Web 测试和基于 AI 的 Web 测试

支持在 Windows Docker 容器中运行 Web 测试和基于 AI 的 Web 测试作为技术预览。

Docker 中 Web 和基于 AI 的 Web 测试只能在 Headless Chrome 上运行。此部分介绍如何创建 UFT One 自动脚本以在 Docker 中的 Headless Chrome 上运行此类测试。

要在 Docker 容器中的 Headless Chrome 上运行 Web 和基于 AI 的 Web 测试,请执行以下操作:

  1. 先决条件: 设置 Windows Docker 容器并确保已执行准备在 Headless Chrome 上运行测试中描述的所有步骤。

  2. 创建包含以下部分的 UFT One 自动脚本:

    • 启动 UFT One

    • 使用 WebLauncher 对象设置浏览器类型。

      要运行基于 AI 的 Web 测试,必须启用 AI 对象检测。默认情况下,AI 对象检测处于启用状态,但如有必要,可以添加步骤以将其启用。

    • 运行 UFT One 测试。

    • 关闭测试。

    • 关闭 UFT One

    以下是示例脚本:

    Copy code
    Dim qtApp 'As QuickTest.Application ' Declare the Application object variable
    Dim qtTest 'As QuickTest.Test ' Declare a Test object variable
    Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable
    Dim qtAutoExportResultsOpts 'As QuickTest.AutoExportReportConfigOptions ' Declare the Automatically Export Report Configuration Options object variable
    Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object
    qtApp.Launch ' Start UFT
    qtApp.Visible = False ' Make the UFT application invisible
    qtApp.Open "c:\tests\Headless" '
    'Set run settings for the test
    Set qtTest = qtApp.Test
    'Set RnR setting
    qtApp.Test.Settings.Launchers("Web").Active = True
    qtApp.Test.Settings.Launchers("Web").Browser = "CHROME_HEADLESS"
    Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions"
    qtResultsOpt.ResultsLocation = "c:\tests\reports"
    qtTest.Run qtResultsOpt ' Run the test
    qtApp.Test.Close
    qtApp.Quit 
  3. 在主机计算机上的命令窗口中,运行以下命令:

    Copy code
    docker run -it --name <容器名称> -v <主机目录>:<容器目录> <UFT One Docker 镜像名称>[:tag] cmd //Add [:tag] to specify a UFT image version.Default is 'latest'.
    cd <容器目录>
    <脚本名称>.vbs //Run the automation script

    备注:  

返回页首

在 Linux Docker 容器中运行 API 测试

支持在 Linux Docker 容器中运行 API 测试作为技术预览。

创建 UFT One Docker 容器之前中所述,准备先决条件并拉取 uft_one_for_api_tests 镜像。

运行 UFT One API 测试需要并发许可证。

运行以下命令安装 UFT One 许可证并运行 API 测试:

Copy code
docker run -it -v <主机测试目录>:<容器测试目录> functionaltesting/uft_one_for_api_tests[:tag] -test <容器测试目录> -reportPath <报告目录路径> -licenseServer <许可证服务器 IP>:<端口>

其中:

参数名 描述

<主机测试目录>

主机计算机上 API 测试的完整路径。该目录装载到容器测试目录中。

<容器测试目录>

Docker 容器中装载 <主机测试目录> 的目录的完整路径。

示例:C:\DockerProject\tests\apitest,其中 C:\DockerProject\tests 是您为测试创建的本地目录,apitest 是存储在其中的测试的名称。

<报告目录路径>

(可选) 存储测试结果的目录的路径。提供相对于“<容器测试目录>”的相对路径

默认情况下,结果保存在测试文件夹下,覆盖以前的所有运行结果。

<许可证服务器 IP>:<端口> 并发许可证服务器的 IP 地址和端口号。

技术预览范围

下表描述了您可以在基于 Linux 的镜像上的 API 测试中运行的活动:

受支持的活动 不受支持的活动

日期/时间

CoAP

数据库

FTP (UFT One 24.2 及更高版本) 调用外部 GUI 和 API 测试

HTTP

文件

JSON

IBM WebSphere MQ

数学

JMS
REST

Java

SOAP

MQTT

字符串

SAP

系统变量

WebSocket

XML (UFT One 24.2 及更高版本)

 

杂项操作

 

返回页首

另请参见: