在 Windows Docker 容器中运行 UFT One 测试

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

  • UFT One 的 Docker 镜像使您可以使用 UFT MobileUFT One 自动脚本在 Windows Docker 环境中运行移动测试。
  • UFT One 15.0.1 Docker 镜像还支持在 Windows Docker 环境中运行 API 测试。
  • 此 uft 轻量级镜像提供了与完整镜像相同的功能,但更小且下载速度更快。

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

系统要求

在 Windows Docker 容器中运行 UFT One 测试需要使用 Windows Server 2016 操作系统。

返回页首

概述

要在 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 Windows Docker 容器

先决条件:

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

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

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

拉取 UFT Docker 镜像

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

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

UFT One Docker 镜像名称可以是 functionaltesting/uftfunctionaltesting/uft-lite

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

从 UFT Docker 镜像创建 Docker Windows 容器

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

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

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

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

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

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

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

返回页首

在 Docker 容器中运行移动测试

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

配置 UFT OneUFT Mobile 的集成

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

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

使用 UFT Mobile 创建 UFT One 自动脚本

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

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

  • 启动 UFT One
  • 使用 MCConnection 选项对象配置 UFT OneUFT Mobile 的连接。
  • 使用“启动”方法启动应用程序。
  • 运行 UFT One 测试。
  • 关闭测试。
  • 关闭 UFT One

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

Dim qtApp 'As QuickTest.Application ' Declare the Application object variable
Set qtApp = CreateObject("QuickTest.Application")
qtApp.Launch
qtApp.Visible = True
qtApp.Options.MCConnection.Server = "<UFT Mobile 服务器>"
qtApp.Options.MCConnection.Port = "<UFT Mobile 服务器端口>"
qtApp.Options.MCConnection.Username = "<UFT Mobile 服务器用户名>"
qtApp.Options.MCConnection.Password = "<UFT Mobile 服务器用户密码>"
qtApp.Options.MCConnection.UseSSL = false
qtApp.Options.MCConnection.SharedSpace = "<UFT Mobile 服务器租户 ID>"
qtApp.Options.MCConnection.WorkSpace = "<UFT Mobile 服务器工作空间 ID>"
qtApp.Options.MCConnection.ShowRemoteWndOnRun = true
qtApp.Open "<UFT 脚本路径>", True
Set qtMobileLauncher = qtApp.Test.Settings.Launchers("Mobile")
qtMobileLauncher.Lab = "MobileCenter"
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 Mobile 服务器连接详细信息的占位符替换为 UFT Mobile 服务器中的值。

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

在 Docker 容器中运行 UFT One 自动脚本

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

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

在容器中安装并发 UFT One 许可证。请参阅使用命令行管理许可证

cd <容器目录>

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

其中:

参数名 描述

<容器名称>

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

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

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

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

UFT One Docker 镜像名称。可以是 functionaltesting/uftfunctionaltesting/uft-lite

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

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

返回页首

在 Docker 容器中运行 UFT One API 测试

UFT One 15.0.1 及更高版本上受支持

采用下述的一种方式运行 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)\Micro Focus\Unified Functional Testing\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)\Micro Focus\Unified Functional Testing\bin\HP.ST.Fwk.InternalExecuter.exe" -test C:\tests\apitest -reportPath result1

返回页首

使用 Jenkins 在 Docker 中触发 UFT One API 测试运行

UFT One 15.0.1 及更高版本上受支持

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

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

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

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

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

    • 根据安装许可证后提交的 UFT One 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 <报告目录路径>

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

返回页首

另请参见: