使用命令行并行运行 UFT One 测试

使用命令行触发 ParallelRunner 工具以并行运行多个 UFT One 测试。

并行运行测试

ParallelRunner 工具位于“<UFT One 安装文件夹>/bin”目录中。使用命令行触发工具以进行并行测试。

执行以下操作:

  1. 关闭 UFT One。ParallelRunner 和 UFT One 不能同时运行。

  2. 通过使用以下方法之一配置测试运行,从命令行界面并行运行测试:

使用 ParallelRunner 的运行测试将“快速”模式下运行。有关详细信息,请参阅快速模式

有关详细信息,请参见:

返回页首

使用命令行选项定义测试运行信息

与 GUI Web 和移动测试以及 API 测试相关

从命令行运行测试时,请单独使用命令分别运行每个测试。

对于 GUI 测试,如果您为运行提供不同的替代项,则每个命令都会多次运行测试。您可以为以下对象提供替代项: 

  • 浏览器
  • 设备
  • 数据表
  • 测试参数

要从命令行运行测试,请使用以下各个部分中定义的语法。使用分号 (;) 分隔各个替代项。

ParallelRunner 会根据需要多次运行测试,以测试您提供的替代项的所有组合。

例如: 

运行测试三次,为每个浏览器运行一次:

ParallelRunner -t "C:\GUIWebTest" -b "Chrome;IE;Firefox"

运行测试四次,为每个浏览器上的每个数据表运行一次:

ParallelRunner -t "C:\GUIWebTest" -b "Chrome;Firefox" -dt ".\Datatable1.xlsx;.\Datatable2.xlsx"

运行测试 8 次,使用每个数据表和每组测试参数在每个浏览器上测试。

ParallelRunner -t "C:\GUIWebTest" -b "Chrome;Firefox" -dt ".\Datatable1.xlsx;.\Datatable2.xlsx" -tp "param1:value1, param2:value2; param1:value3, param2:value4"

提示: 或者,引用 .json 文件,该文件在单个文件中配置了多个测试。在此文件中,分别配置每个测试运行。有关详细信息,请参阅手动创建 .json 文件以定义测试运行信息

Web 测试命令行语法

在命令行中,使用以下语法运行每个 Web 测试:

ParallelRunner -t <测试路径> -b <浏览器> -r <结果路径>

例如:

ParallelRunner -t "C:\GUIWebTest_Demo" -b "Chrome;IE;Firefox" -r "C:\parallelexecution"

如果指定多个浏览器,则测试将运行多次,即在每个浏览器上运行一次。

移动测试命令行语法

在命令行中,使用以下语法运行每个移动测试:

ParallelRunner -t <测试路径> -d <设备详细信息> -r <结果路径>

例如:

ParallelRunner -t "C:\GUITest_Demo" -d "deviceID:HT69K0201987;manufacturer:samsung,osType:Android,osVersion:>6.0;manufacturer:motorola,model:Nexus 6" -r "C:\parallelexecution"

 

如果指定多个设备,则测试将运行多次,即在每个设备上运行一次。

等待可用的设备

您可以指示 ParallelRunner 等待合适的设备变得可用,而不是在没有可用设备时立即将测试运行设为失败。为此,请将 -we 选项添加到 ParallelRunner 命令中。

API 测试命令行语法

在命令行中,使用以下语法运行每个 API 测试:

ParallelRunner -t <测试路径> -r <结果路径>

例如:

ParallelRunner -t "C:\APITest" -r "C:\API_TestResults"

命令行选项

直接从命令行运行测试时,请使用以下选项。

  • 选项名称不区分大小写。

  • 使用后跟选项缩写的短划线 (-),或者后跟选项全名的双短划线 (--)。

-t

--test

字符串。必填项。定义要运行的 UFT One 测试所在文件夹的路径。

如果路径中包含空格,则必须用双引号 ("") 将路径引起来。例如: -t ".\GUITest Demo"

不支持在同一路径中存在多个测试。

-b


--browsers

字符串。可选。支持 Web 测试。

使用分号 (;) 定义多个浏览器。ParallelRunner 会多次运行测试,以在所有指定浏览器上进行测试。

受支持的值包括:

ChromeChrome_HeadlessChromiumEdgeEdgeFirefoxFirefox64IEIE64Safari

注意:

  • 此值将覆盖在“录制和运行设置”中定义的所有设置,以及在测试中配置的所有浏览器参数化。WebUtil.LaunchBrowser 方法不受影响。
  • 我们建议对浏览器名称使用一致的大小写,以免相同浏览器类型的运行结果报告中出现单独的列。有关更多详细信息,请参阅示例 ParallelRunner 响应和运行结果
  • 支持通过在远程 Mac 计算机上进行测试来使用 Safari。有关更多详细信息,请参阅连接到远程 Mac 计算机

-d

--devices

字符串。可选。支持移动测试。

使用分号 (;) 定义多个设备。ParallelRunner 会多次运行测试,以在所有指定设备上进行测试。

使用此字符串中的以下属性,定义使用特定设备 ID 的设备,或按功能查找设备:

  • deviceID。Digital Lab (UFT Mobile) 设备实验室中的特定设备定义设备 ID。此属性不能与其他设备功能属性结合使用。

  • manufacturer。定义设备制造商。

  • model。定义设备型号。

  • osType。定义设备操作系统。

    以下之一: AndroidiOSWindows Phone

    如果未定义此值,UFT One 将使用测试的“录制和运行设置”中定义的 osType 作为默认值。

  • osVersion。定义设备操作系统版本。以下之一:

    • Any。将版本号保留为未定义状态。

    • 特定版本。例如: 10.0

    • 布尔运算符和版本值。例如: >10.0<10.0>=10.0<=10.0

: 请勿在此字符串中的逗号、冒号或分号周围额外添加空格。我们建议始终用双引号 ("") 将字符串引起来,以支持任何特殊字符。

例如:

–d "manufacturer:apple,osType:iOS,osVersion:>=11.0"

-dt

--dataTables

字符串。可选。支持 Web 和移动测试。

定义要用于此测试的数据表的路径。UFT One 将使用您提供的表,而非随测试一起保存的数据表。

使用分号 (;) 定义多个数据表。ParallelRunner 会多次运行测试,以使用所有指定的数据表进行测试。

如果路径中包含空格,则必须用双引号 ("") 将路径引起来。

例如: -dt ".\Data Tables\Datatable1.xlsx;.\Data Tables\Datatable2.xlsx"

-o

--output

字符串。可选。确定测试运行期间和之后在控制台中显示的结果输出。

受支持的值包括:

  • Normal。(默认) 运行输出会在控制台中自动更新。

    例如,运行状态会从“待定”更改为“正在运行”,然后更改为“通过”或“失败”

  • Static。在测试运行开始时显示报告路径,然后在测试完成时会显示运行状态。

  • Disable。输出根本不会显示在控制台中。

-r

--reportPath

字符串。可选。定义要用于保存测试运行结果的路径。默认情况下,运行结果保存在 %Temp%\TempResults 中。

如果字符串中包含空格,则必须用双引号 ("") 将字符串引起来。例如: - r "%Temp%\Temp Results"

-rl

--report-auto-launch

可选。包含在命令中,以在测试运行开始时自动打开运行结果。使用 -rr--report-auto-refresh 选项确定测试运行的刷新频率。

有关更多详细信息,请参阅示例 ParallelRunner 响应和运行结果

-rn

--reportName

字符串。可选。定义报告名称,当您打开并行运行的摘要报告时,该名称将显示在浏览器选项卡中。默认情况下,该名称为 Parallel Report

自定义此名称,以帮助在同时打开多个报告时区分不同的运行。为此,UFT One 还会为每个报告名称添加时间戳。

如果字符串中包含空格,则必须用双引号 ("") 将字符串引起来。例如: - rn "My Report Title"

-rr

--report-auto-refresh

可选。确定已打开的运行结果文件自动刷新的频率,以秒为单位。

例如: -rr 5

如果未提供整数,则使用默认值: 5 秒

-tp

--testParameters

字符串。可选。支持 Web 和移动测试。

定义用于测试参数的值。提供参数名称-值对的逗号分隔列表。

对于未指定的测试参数,UFT One 将使用在测试自身中定义的默认值。

例如: -tp "param1:value1,param2:value2"

使用分号 (;) 定义多个测试参数集。ParallelRunner 会多次运行测试,以使用所有指定的测试参数集进行测试。

例如: -tp "param1:value1, param2:value2; param1:value3, param2:value4"

如果参数值包含逗号 (,)、分号 (;) 或冒号 (:),请使用后跟双引号的反斜杠 (\") 将值引起来。

例如,如果 TimeParam 的值为 10:00;00,则使用:

-tp "TimeParam:\"10:00;00\""

注: 不能在使用命令行选项的参数值内包含双引号 (")。对于 ParallelRunner 命令,请改为使用 JSON 配置文件。

-we

--wait-for-environment

可选。支持移动测试。

包含在命令中,以指示每个移动测试运行等待合适的设备变得可用,而不是在没有可用设备时立即设为失败。

返回页首

手动创建 .json 文件以定义测试运行信息

与 GUI Web、移动、Java 和 API 测试相关

手动创建 .json 文件以指定要并行运行的多个测试并为每个测试运行定义测试信息。然后,直接从命令行引用 .json 文件。

要创建 .json 文件并使用该文件开始并行测试,请执行以下操作:

  1. .json 文件中,为每个测试运行添加单独的行。使用 .json 选项描述要用于每个运行的环境、数据表和参数。

    提示: 您可以使用 ParallelRunner UI 工具自动创建 .json 文件。有关详细信息,请参阅 配置并行测试运行

  2. 对于 GUI 移动测试,您可以将 Digital Lab (UFT Mobile) 连接设置与测试信息一起包含在 .json 文件中。有关如何定义连接设置,请参阅示例 .json 文件

    .json 文件优先于在 UFT One 的“工具”>“选项”>“GUI 测试”>“移动”中定义的连接设置。

  3. 使用以下命令行选项在命令行中引用 .json 文件:

    -c

    字符串。定义 .json 配置文件的路径。

    使用以下语法开始并行测试:

    ParallelRunner -c <.json 文件路径>

    例如:

    ParallelRunner -c parallelexecution.json

  4. 添加其他命令行选项以配置运行结果。有关详细信息,请参阅 -o-rl-rr

    这些选项是唯一可以与 .json 配置文件一起使用的命令行选项。任何其他命令行选项都将被忽略。

示例 .json 文件

请参考以下示例文件。在此文件中,最后一个测试同时在本地桌面浏览器和移动设备上运行。另请参阅包含同步的示例 .json 配置文件

用于创建 .json 配置文件的选项引用

在 .json 文件中定义以下选项 (区分大小写):

reportPath

字符串。定义要用于保存测试运行结果的路径。

默认情况下,运行结果保存在 %Temp%\TempResults 中。

reportName

字符串。定义报告名称,当您打开并行运行的摘要报告时,该名称将显示在浏览器选项卡中。默认情况下,报告名称与 .json 文件名相同。

自定义此名称,以帮助在同时打开多个报告时区分不同的运行。为此,UFT One 还会为每个报告名称添加时间戳。

测试

字符串。定义要运行的 UFT One 测试所在文件夹的路径。

reportSuffix

字符串。定义要附加到运行结果文件名末尾的后缀。例如,您可能想要添加指示测试运行环境的后缀。

示例:"reportSuffix":"Samsung6_Chrome"

默认值: "[N]"。此值指示当前结果实例的索引号 (如果同一并行运行中的同一测试存在多个结果)。

注: 

  • 运行结果文件名由“<测试名称>_<reportSuffix>”组成且必须唯一。因此,请勿为同一测试的多个运行提供相同后缀。
  • 确定后缀时请记住,如果生成的文件名超过 22 个字符,则文件名将在 ParallelRunner 于命令窗口中提供的输出中被截断。
browser

字符串。定义在运行 Web 测试时要使用的浏览器。

受支持的值包括:

ChromeChrome HeadlessChromiumEdgeEdgeIEIE64FirefoxFirefox64Safari

注意:

  • 此值将覆盖在“录制和运行设置”中定义的所有设置,以及在测试中配置的所有浏览器参数化。WebUtil.LaunchBrowser 方法不受影响。
  • 我们建议对浏览器名称使用一致的大小写,以免相同浏览器类型的运行结果报告中出现单独的列。有关更多详细信息,请参阅示例 ParallelRunner 响应和运行结果
  • 支持通过在远程 Mac 计算机上进行测试来使用 Safari。有关更多详细信息,请参阅连接到远程 Mac 计算机
deviceID

字符串。为 Digital Lab (UFT Mobile) 设备实验室中的特定设备定义设备 ID。

: 如果同时提供了 deviceID 和设备功能属性,则将忽略设备功能属性。

manufacturer

字符串。定义设备制造商。

model

字符串。定义设备型号。

osVersion

字符串。定义设备操作系统版本。

以下之一:

  • Any。将版本号保留为未定义状态。

  • 特定版本。例如 10.0

  • 布尔运算符和版本值。例如: >10.0<10.0>=10.0<=10

osType

定义设备操作系统。

以下之一:

  • Android
  • iOS
  • Windows Phone

dataTable

字符串。支持 GUI Web、移动和 Java 测试。

定义要用于此测试运行的数据表的路径。UFT One 将使用您提供的表,而非随测试一起保存的数据表。

dataTable 定义置于描述相关测试运行的部分中。

testParameter

字符串。支持 GUI Web、移动和 Java 测试。

定义要用于此测试运行中的测试参数的值。提供参数名称-值对的逗号分隔列表。

例如: 

"testParameter":{
      "para1":"val1",
      "para2":"val2"
    }

testParameter 定义置于描述相关测试运行的部分中。

如果参数值包含反斜杠 (\) 或双引号 ("),则在相应字符前面添加反斜杠。例如: "para1":"val\"1" 会将值 val"1 分配给参数 para1

对于未指定的测试参数,UFT One 将使用在测试自身中定义的默认值。

waitForEnvironment

将此选项设置为 true,以指示每个移动测试运行等待合适的设备变得可用,而不是在没有可用设备时立即设为失败。

主机名 / 端口

Digital Lab (UFT Mobile) 服务器的 IP 地址和端口号。

默认端口: 8080

AuthType

连接到 Digital Lab (UFT Mobile) 时要使用的身份验证模式。

可用值:

  • 1: 访问密钥身份验证。使用您从 Digital Lab (UFT Mobile) 收到的访问密钥进行身份验证。

  • 0: 基本身份验证。使用用户名和密码进行身份验证。

用户名 / 密码 Digital Lab (UFT Mobile) 服务器的登录凭据。

ClientId / SecretKey / TenantId

(UFT One 版本 2023 及更高版本)

Digital Lab (UFT Mobile) 收到的访问密钥。

返回页首

使用条件同步并行运行

要同步和控制并行运行,可以在测试运行之间创建依赖关系并控制运行的开始时间。(仅在 ParallelRunner 命令中使用 .json 文件时才支持)。

使用条件,测试运行可以执行以下一项或多项操作: 

  • 等待几秒钟,然后再开始运行。
  • 在其他测试运行之后运行。
  • 仅在其他测试运行并达到特定状态后才开始。

对于在 .json 文件中定义的每个测试运行,请创建用于控制运行开始时间的条件。使用如下所述的元素在 test 部分下构建条件。

您可以创建以下类型的条件: 

  • 简单条件,其中包含一个或多个 wait 语句。
  • 组合条件,其中包含多个条件和一个用于指定是否必须满足所有条件的 AND/OR 运算符。
testRunName 测试运行的名称。由 waitForTestRunwaitForRunStatuses 条件中的其他测试运行使用。
条件

包含用于控制此测试的运行的所有 wait 条件的主要元素。

可能包含 wait 选项或嵌套 conditions 元素。

conditions

包含由一个或多个简单条件或其他组合条件组成的数组的元素。

conditions 元素可以包含在组合条件中。

operator

指示是否必须满足运算符后面的 conditions 元素中的所有条件。

可能值: 

  • AND。必须满足运算符后面的所有条件,测试运行才会开始。
  • OR。只要满足运算符后面的条件之一,测试运行就会开始。
waitSeconds

指示 ParallelRunner 在等待指定的秒数之后开始此测试运行。

waitForTestRun

指示 ParallelRunner 在指定的运行结束后执行此测试运行。通过使用运行的 testRunName 来指定要等待的运行。

可以将 waitForTestRun 选项与其他选项结合使用:

  • 使用 waitSeconds 在指定的运行结束后等待数秒。
  • 使用 waitForRunStatuses 等至指定的测试达到特定状态。

例如: 以下条件指示 ParallelRunner 在测试运行 3 达到指定状态之一后 10 秒执行测试运行 1

"testRunName": "1",
    "condition":{
        "waitForTestRun": "3",
        "waitSeconds": 10,
        "waitForRunStatuses": ["passed", "failed", "warning", "canceled"]
}

注: 组合多个 wait 选项时,隐含的运算为 AND。

waitForRunStatuses

指示 ParallelRunner 在指定运行达到特定状态后执行此测试运行。

  • 通过使用运行的 testRunName 来指定要等待的运行。

  • 提供要等待的一个或多个测试状态的字符串。在指定测试达到指定状态之一后,即表示满足条件。

    例如: "waitForRunStatuses": ["passed", "failed", "warning", "canceled"]

包含同步的示例 .json 配置文件

下面是提供同步并行运行的示例 .json 配置文件:

Copy code
{
  "reportPath": "C:\\parallelexecution",
  "reportName": "My Report Title",
  "waitForEnvironment": true,
  "parallelRuns": [{
    "test": "C:\\Users\\qtp\\Documents\\UFT One\\GUITest_Mobile",
    "testRunName": "1",
    "condition": { 
          "operator": "AND",
          "conditions": [{
            "waitSeconds": 5
            }, {
              "operator": "OR", 
              "conditions": [{
                "waitSeconds": 10,
                "waitForTestRun": "2"
              }, {
                "waitForTestRun": "3",
                "waitSeconds": 10,
                "waitForRunStatuses": ["failed", "warning", "canceled"]
              }
            ] 
          }
        ]  
      },
    "env": {
      "mobile": {
        "device": {
          "osType": "IOS"
        }
      }
    }
  }, {
    "test": "C:\\Users\\qtp\\Documents\\UFT One\\GUITest_Mobile",
    "testRunName": "2",
    "condition": {
      "waitForTestRun": "3",
      "waitSeconds": 10
    },
    "env": {
      "mobile": {
        "device": {
          "osType": "IOS"
        }
      }
    }
  }, {
    "test": "C:\\Users\\qtp\\Documents\\UFT One\\GUITest_Mobile",
    "testRunName": "3",
    "env": {
      "mobile": {
        "device": {
          "deviceID": "63010fd84e136ce154ce466d79a2ebd357aa5ce2"
        }
      }
    }
  }]
}

使用此 .json 文件运行 ParallelRunner 时,会发生以下情况:

  • 测试运行 3 将等待设备 63010fd84e136ce154ce466d79a2ebd357aa5ce2。

  • 测试运行 2 将在测试运行 3 结束后等待 10 秒,然后等待可用的 IOS 设备。

  • 测试运行 1 将在 ParallelRunner 命令运行之后先等待 5 秒。

    接着在测试运行 2 结束或者测试运行 3 达到 failed、warning 或 canceled 状态之后等待 10 秒。

    然后会一直等到 iOS 设备可用。

返回页首

停止并行执行

要从命令行退出测试运行,请在键盘上按 Ctrl+C

  • 状态为“正在运行”或“待定”(指示尚未完成) 的任何测试将立即停止。

  • 对于这些已取消的测试,将不会生成任何运行结果。

返回页首

示例 ParallelRunner 响应和运行结果

以下代码显示使用 ParallelRunner 运行测试后在命令行中显示的示例响应。

>ParallelRunner -t ".\GUITest_Demo" -d "manufacturer:samsung,osType:Android,osVersion:Any;deviceID:N2F4C15923006550" -r "C:\parallelexecution" -rn "My Report Name"

Report Folder: C:\parallelexecution\Res1

ProcessId, Test, Report, Status

3328, GUITest_Demo, GUITest_Demo_[1], Running -

3348, GUITest_Demo, GUITest_Demo_[2], Pass

在此示例中,运行完成后,以下结果文件将保存在 :\parallelexecution\Res1 目录中:

  • GUITest_Demo_[1]
  • GUITest_Demo_[2]

parallelrun_results.html 文件将显示所有并行运行测试的结果。浏览器选项卡中的报告名称为 My Report Name

表中的第一行指示由 ParallelRunner 命令定义的任何规则,后续各行指示结果以及测试期间使用的实际环境。

提示: 对于每个测试运行,单击 HTML 报告 图标可打开特定运行的结果。仅当将 UFT One 配置为生成 HTML 运行结果时才支持此操作。

例如:

注: 该报告将为每个浏览器名称单独提供一列,并且为便于比较浏览器名称,将区分大小写。因此,将为 IE 和 ie 提供单独的列。

返回页首

另请参见: