使用命令行并行运行测试

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

并行运行测试

ParallelRunner 工具位于“<Installdir>/bin”目录中。使用命令行触发工具以进行并行测试。

要并行运行测试,请执行以下操作:

  1. 关闭 OpenText Functional Testing。ParallelRunner 和 OpenText Functional Testing 不能同时运行。

  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

字符串。必填项。定义包含要运行的测试的文件夹路径。

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

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

-b


--browsers

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

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

受支持的值包括:

ChromeChrome_HeadlessChromiumEdgeEdgeFirefoxFirefox64IEIE64Safari

注意:

  • 此值将覆盖在“录制和运行设置”中定义的所有设置,以及在测试中配置的所有浏览器参数化。WebUtil.LaunchBrowser 方法不受影响。

  • 我们建议对浏览器名称使用一致的大小写,以免相同浏览器类型的 Chromium 运行结果报告中出现单独的列。有关更多详细信息,请参阅请参阅 "示例 ParallelRunner 响应和运行结果"

  • 支持通过在远程 Mac 计算机上进行测试来使用 Safari。有关更多详细信息,请参阅请参阅 "连接到远程 Mac 计算机"

  • ChromiumEdge 值仅支持向后兼容。请改用 Edge。两者都指 Microsoft Edge。

-d

--devices

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

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

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

  • deviceID。OpenText Functional Testing Lab 中的特定设备定义设备 ID。此属性不能与其他设备功能属性结合使用。

  • manufacturer。定义设备制造商。

  • model。定义设备型号。

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

    以下之一: AndroidiOSWindows Phone

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

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

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

    • 特定版本。例如: 10.0

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

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

例如:

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

-dt

--dataTables

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

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

使用分号 (;) 定义多个数据表。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

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

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

-rr

--report-auto-refresh

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

例如: -rr 5

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

-tp

--testParameters

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

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

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

例如: -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 移动测试,您可以将 OpenText Functional Testing Lab 连接设置与测试信息一起包含在 .json 文件中。有关如何定义连接设置,请参阅请参阅 "示例 .json 文件"

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

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

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

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

    ParallelRunner -c <.json 文件路径>

    例如:

    ParallelRunner -c parallelexecution.json

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

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

示例 .json 文件

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

示例 .json 文件

{ "reportPath": "C:\\parallelexecution", "reportName":"My Report Title", "waitForEnvironment":true, "parallelRuns": [ { "test": "C:\\Users\\qtp\\Documents\\Functional Testing", "dataTable": "C:\\Data Tables\\Datatable1.xls", "testParameter":{ "para1":"val1", "para2":"val2" } "reportSuffix": "Samsung_OS_above_6", "env": { "mobile": { "device": { "manufacturer": "samsung", "osVersion": ">6.0", "osType": "Android" } } } }, { "test": "C:\\Users\\qtp\\Documents\\Functional Testing", "reportSuffix": "ID_HT69K0201987", "env": { "mobile": { "device": { "deviceID": "HT69K0201987" } } } }, { "test": "C:\\Users\\qtp\\Documents\\API Test", "reportSuffix": "API" } , { "test": "C:\\Users\\qtp\\Documents\\Functional Testing", "dataTable": "C:\\Data Tables\\Datatable3.xls", "reportSuffix": "Mobile_Web", "env": { "web": { "browser": "Chrome" }, "mobile": { "device": { "manufacturer": "motorola", "model": "Nexus 6", "osVersion": "7.0", "osType": "Android" } } } } ] "settings": { "mc": { "Protocol": "http", "Hostname": "xxxxx", "Port": 8080, "Pathname": null, "AuthType": 1, "Account": "default", "Username": "xxxxx", "Password": "xxxxx", "ClientId": "xxxxx", "SecretKey": "xxxxx", "TenantId": "xxxxx", "WorkspaceId": null, "Proxy": null } } }

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

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

选项 描述
reportPath

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

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

reportName

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

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

测试

字符串。定义包含要运行的测试的文件夹路径。

reportSuffix

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

示例:"reportSuffix":"Samsung6_Chrome"

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

注: 

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

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

受支持的值包括:

ChromeChrome HeadlessChromiumEdgeEdgeIEIE64FirefoxFirefox64Safari

注意:

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

deviceID

字符串。为 OpenText Functional Testing Lab 中的特定设备定义设备 ID。

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

manufacturer

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

model

字符串。定义设备型号。

osVersion

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

以下之一:

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

  • 特定版本。例如 10.0

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

osType

定义设备操作系统。

以下之一:

  • Android
  • iOS
  • Windows Phone

dataTable

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

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

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

testParameter

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

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

例如: 

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

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

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

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

waitForEnvironment

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

主机名 / 端口

OpenText Functional Testing Lab 服务器的 IP 地址和端口号。

默认端口: 8080

AuthType

连接到 OpenText Functional Testing Lab 时要使用的身份验证模式。

可用值:

  • 1: 访问密钥身份验证。使用您从 OpenText Functional Testing Lab 收到的访问密钥进行身份验证。

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

用户名 / 密码 OpenText Functional Testing Lab 服务器的登录凭据。

ClientId / SecretKey / TenantId

OpenText Functional Testing Lab 收到的访问密钥。

使用条件同步并行运行

要同步和控制并行运行,可以在测试运行之间创建依赖关系并控制运行的开始时间。(仅在 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 配置文件:

{ "reportPath": "C:\\parallelexecution", "reportName": "My Report Title", "waitForEnvironment": true, "parallelRuns": [{ "test": "C:\\Users\\qtp\\Documents\\Functional Testing\\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\\Functional Testing\\GUITest_Mobile", "testRunName": "2", "condition": { "waitForTestRun": "3", "waitSeconds": 10 }, "env": { "mobile": { "device": { "osType": "IOS" } } } }, { "test": "C:\\Users\\qtp\\Documents\\Functional Testing\\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 报告 图标可打开特定运行的结果。仅当将 OpenText Functional Testing 配置为生成 HTML 运行结果时才支持此操作。

例如:

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

另请参见: