在 Windows Docker 容器中运行 UFT One 测试
使用 UFT One Docker 镜像可加快 UFT One 维护和测试运行的速度。
本主题假定您具有 Docker 管理方面的一些知识,因此未详细描述 Docker 管理步骤。
可用的 UFT One Docker 镜像
使用 UFT One Docker 镜像在 Windows Docker 环境中运行移动或 API 测试。镜像可从 https://hub.docker.com/r/functionaltesting/ 获得。
所有镜像都支持以下功能:
- 使用 Digital Lab (UFT Mobile) 和 UFT One 自动化脚本运行移动测试。
- 在 Windows Docker 环境中运行单一 API 测试。
可以使用以下镜像:
-
uft 镜像是安装了 UFT One 的完整 Windows Docker 镜像。
-
Uft_lite 镜像提供了与完整镜像相同的功能,但更小且下载速度更快。
-
提供的两个 UFT One 实用程序 Docker 镜像基于 uft 或 uft_lite 镜像,但还包括其他实用程序工具。
使用 UFT One 实用程序 Docker 镜像的优势
此镜像启用以下增强功能:
更简单的测试运行 | 使用单个命令在 Windows Docker 环境中更流畅、更轻松地运行 UFT One 测试。 |
运行多个 API 测试 | 您现在可以使用一个 Docker 命令来运行存储在指定文件夹中的所有 API 测试。 |
将运行结果转换为 JUnit 报告 | 测试运行后,使用 ReportConverter 实用程序根据运行结果创建 JUnit 报告。 |
在 CI-CD 管道中使用 Docker 镜像 | 使用 Docker 镜像中包含的实用程序工具,从 CI-CD 管道对 Docker 镜像运行测试。 |
UFT One 实用程序 Docker 镜像比 uft 和 uft_lite 镜像发布得更频繁。建议您使用此镜像运行 API 测试。有关使用此镜像的说明,请使用 Docker Hub 上随该镜像提供的文档。
系统要求
您可以在以下操作系统之一的 Windows Docker 容器中运行 UFT One 测试:
使用 uft 镜像 | 使用 uft_lite 镜像 |
---|---|
Windows Server 2016 |
Windows Server 2019 (10.0.17763.1637 或更高版本) |
Windows 10 版本: 2004、1903、1803 |
Windows 10 版本: 2004、1909、1903、1809 |
概述: 使用 UFT One 的 Docker 镜像
要在 Docker 容器中运行 UFT One 测试,您必须执行以下步骤,下面将对这些步骤进行详细说明:
- 从 Docker Hub 拉取 UFT One Docker 镜像。
- 根据该 Docker 镜像创建一个容器。
- 在容器中安装并发 UFT One 许可证。
- 在 Docker 容器中运行 UFT One 测试。
必须在您使用的每个 UFT One Docker 容器中安装一个 UFT One 许可证。可以采用以下方式之一进行处理:
-
安装 UFT One 许可证后,可以将此容器提交到新镜像。然后,根据新镜像创建所有后续容器,并避免安装其他许可证。
-
安装 UFT One 许可证后,使用同一容器进行后续运行,并根据需要停止和启动该容器。
-
使用 Docker 命令创建新容器,安装并发许可证,然后运行测试。
设置 UFT One Windows Docker 容器
此部分介绍如何设置 UFT One Windows Docker 容器:
先决条件
-
在您的计算机上安装并设置 Docker,以便它可以从 Docker Hub 提取 Docker 镜像。这会将您的计算机设为 Docker 主机。
按照 Microsoft 文档中所述安装 Docker 引擎和客户端。
有关设置 Docker 的详细信息,请参阅 Docker 文档。
-
在您的计算机上启用硬件和软件虚拟化。
-
确保您的 Docker 配置为运行 Windows 容器。(右键单击 Docker 托盘图标,可以看到“切换到 Linux 容器”显示在菜单选项中。)
拉取镜像并创建容器
拉取 UFT Docker 镜像并创建 Docker Windows 容器:
-
要拉取 UFT Docker 镜像,请在主机计算机的命令窗口中运行以下命令:
docker pull <UFT One Docker 镜像名称>[:tag]
UFT One Docker 镜像名称可以是 functionaltesting/uft 或 functionaltesting/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 Server 2016 (uft 镜像) 和 Windows Server 2019 (uft_lite 镜像)。如果您将 Docker 主机与其他操作系统一起使用,则可能会收到有关操作系统不兼容的消息。请查阅 Docker 文档以缓解此问题。例如,将
--Isolation=hyperv
或-–isolation=process
添加至命令可能会解决问题。
在 Docker 容器中安装 UFT One 许可证
UFT One Docker 镜像仅支持并发许可证,每次 Docker 容器使用 UFT One 时,都会从服务器中使用许可证。
在 Docker 容器的命令窗口中,在容器中安装并发 UFT One 许可证。有关详细信息,请参阅使用命令行管理许可证。
在 Docker 容器中运行移动测试
安装并配置 Docker 容器后,设置 UFT One--Digital Lab (UFT Mobile) 集成,创建 UFT One 自动脚本,然后在 Docker 容器中运行脚本。
配置集成
要在移动设备上运行 UFT One 测试,请确保为集成设置了 Digital Lab (UFT Mobile) 和应用程序。有关详细信息,请参阅设置 Digital Lab (UFT Mobile) 以与 UFT One 集成。
您在下一步中创建的 UFT One 自动脚本将建立与 Digital Lab (UFT Mobile) 的连接。
在 Docker 容器中运行 UFT One 测试是通过 UFT One 自动脚本完成的,该脚本包含在 Digital Lab (UFT Mobile) 中运行测试所需的具体步骤。
您的脚本应包括以下部分:
- 启动 UFT One。
- 使用 MCConnection 选项对象配置 UFT One 与 Digital Lab (UFT Mobile) 的连接。
- 使用“启动”方法启动应用程序。
- 运行 UFT One 测试。
- 关闭测试。
- 关闭 UFT One。
以下是用于在 Digital Lab (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 = "<Digital Lab (UFT Mobile) 服务器>" qtApp.Options.MCConnection.Port = "<Digital Lab (UFT Mobile) 服务器端口>" qtApp.Options.MCConnection.Username = "<Digital Lab (UFT Mobile) 服务器用户名>" qtApp.Options.MCConnection.Password = "<Digital Lab (UFT Mobile) 服务器用户密码>" qtApp.Options.MCConnection.UseSSL = false qtApp.Options.MCConnection.SharedSpace = "<Digital Lab (UFT Mobile) 服务器租户 ID>" qtApp.Options.MCConnection.WorkSpace = "<Digital Lab (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
备注: 如果您复制此文本以在自动脚本中使用,请确保将 Digital Lab (UFT Mobile) 服务器连接详细信息的占位符替换为 Digital Lab (UFT Mobile) 服务器中的值。
有关更多详细信息,请参阅:
在 Docker 容器中运行自动化脚本
在主机计算机上的命令窗口中,运行以下命令:
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/uft 或 functionaltesting/uft_lite。 |
<脚本名称> | 配置为运行 UFT One 测试的 UFT One 自动脚本的名称。 |
备注: 包含用于特定 UFT One 镜像版本的可选 [:tag]。默认情况下,标记值为 Latest
。
在 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)\Micro Focus\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)\Micro Focus\UFT One\bin\HP.ST.Fwk.InternalExecuter.exe" -test C:\tests\apitest -reportPath result1
使用 Jenkins 在 Docker 中触发 API 测试运行
设置 Docker 容器后,可以使用 Jenkins 触发 UFT One API 测试运行:
-
在主机计算机上,为 API 测试创建本地目录,并将测试存储在该目录中。
-
在 Jenkins 中将 Docker 容器添加为从属容器。
-
添加一个构建步骤,然后选择“执行 Windows 批处理命令”。
-
在该步骤中,插入命令以触发测试。执行以下某项操作:
-
根据安装许可证后提交的 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 容器中运行 API 测试
-
另请参见: