在 Windows Docker 容器中运行 UFT One 测试
使用 UFT One Docker 镜像可加快 UFT One 维护和测试运行的速度。
- UFT One 的 Docker 镜像使您可以使用 UFT Mobile 和 UFT 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 测试,您必须执行以下步骤,下面将对这些步骤进行详细说明:
- 从 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 容器
先决条件:
在您的计算机上安装并设置 Docker,以便它可以从 Docker Hub 提取 Docker 镜像。这会将您的计算机设为 Docker 主机。
按照 Microsoft 文档中所述安装 Docker 引擎和客户端。
有关设置 Docker 的详细信息,请参阅 Docker 文档。
拉取 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 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 One 与 UFT Mobile 的集成
要在移动设备上运行测试,请确保为集成设置了 UFT Mobile 和应用程序。有关详细信息,请参阅设置 UFT Mobile 以与 UFT One 集成。
您在下一步中创建的 UFT One 自动脚本将建立与 UFT Mobile 的连接。
在 Docker 容器中运行 UFT One 测试是通过 UFT One 自动脚本完成的,该脚本包含在 UFT Mobile 中运行测试所需的具体步骤。
您的脚本应包括以下部分:
- 启动 UFT One。
- 使用 MCConnection 选项对象配置 UFT One 与 UFT 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/uft 或 functionaltesting/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 测试运行:
-
在主机计算机上,为 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 容器中运行 UFT One API 测试
-
另请参见: