使用命令行并行运行 UFT One 测试
使用命令行触发 ParallelRunner 工具以并行运行多个 UFT One 测试。
并行运行测试
ParallelRunner 工具位于“<UFT One 安装文件夹>/bin”目录中。使用命令行触发工具以进行并行测试。
执行以下操作:
-
关闭 UFT One。ParallelRunner 和 UFT One 不能同时运行。
-
通过使用以下方法之一配置测试运行,从命令行界面并行运行测试:
-
如果使用 .json 文件,则可以通过在测试运行之间创建依赖关系并控制运行的开始时间来同步和控制并行运行。有关详细信息,请参阅使用条件同步并行运行。
使用 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 "C:\GUITest_Demo" -d "deviceID:HT69K0201987;manufacturer:samsung,osType:Android,osVersion:>6.0;manufacturer:motorola,model:Nexus 6" -r "C:\parallelexecution"
如果指定多个设备,则测试将运行多次,即在每个设备上运行一次。 等待可用的设备 您可以指示 ParallelRunner 等待合适的设备变得可用,而不是在没有可用设备时立即将测试运行设为失败。为此,请将 |
API 测试命令行语法 |
在命令行中,使用以下语法运行每个 API 测试:
例如:
|
直接从命令行运行测试时,请使用以下选项。
-
选项名称不区分大小写。
-
使用后跟选项缩写的短划线 (
-
),或者后跟选项全名的双短划线 (--
)。
|
字符串。必填项。定义要运行的 UFT One 测试所在文件夹的路径。 如果路径中包含空格,则必须用双引号 ("") 将路径引起来。例如: -t ".\GUITest Demo" 不支持在同一路径中存在多个测试。 |
--browsers |
字符串。可选。支持 Web 测试。 使用分号 (;) 定义多个浏览器。ParallelRunner 会多次运行测试,以在所有指定浏览器上进行测试。 受支持的值包括: Chrome、Chrome_Headless、ChromiumEdge、Edge、Firefox、Firefox64、IE、IE64、Safari 注意:
|
|
字符串。可选。支持移动测试。 使用分号 (;) 定义多个设备。ParallelRunner 会多次运行测试,以在所有指定设备上进行测试。 使用此字符串中的以下属性,定义使用特定设备 ID 的设备,或按功能查找设备:
注: 请勿在此字符串中的逗号、冒号或分号周围额外添加空格。我们建议始终用双引号 ("") 将字符串引起来,以支持任何特殊字符。 例如: –d "manufacturer:apple,osType:iOS,osVersion:>=11.0" |
|
字符串。可选。支持 Web 和移动测试。 定义要用于此测试的数据表的路径。UFT One 将使用您提供的表,而非随测试一起保存的数据表。 使用分号 (;) 定义多个数据表。ParallelRunner 会多次运行测试,以使用所有指定的数据表进行测试。 如果路径中包含空格,则必须用双引号 ("") 将路径引起来。 例如: -dt ".\Data Tables\Datatable1.xlsx;.\Data Tables\Datatable2.xlsx"。 |
-o
|
字符串。可选。确定测试运行期间和之后在控制台中显示的结果输出。 受支持的值包括:
|
|
字符串。可选。定义要用于保存测试运行结果的路径。默认情况下,运行结果保存在 %Temp%\TempResults 中。 如果字符串中包含空格,则必须用双引号 ("") 将字符串引起来。例如: - r "%Temp%\Temp Results" |
-rl
|
可选。包含在命令中,以在测试运行开始时自动打开运行结果。使用 -rr--report-auto-refresh 选项确定测试运行的刷新频率。 有关更多详细信息,请参阅示例 ParallelRunner 响应和运行结果。 |
-rn
|
字符串。可选。定义报告名称,当您打开并行运行的摘要报告时,该名称将显示在浏览器选项卡中。默认情况下,该名称为 Parallel Report。 自定义此名称,以帮助在同时打开多个报告时区分不同的运行。为此,UFT One 还会为每个报告名称添加时间戳。 如果字符串中包含空格,则必须用双引号 ("") 将字符串引起来。例如: - rn "My Report Title" |
-rr
|
可选。确定已打开的运行结果文件自动刷新的频率,以秒为单位。 例如: -rr 5 如果未提供整数,则使用默认值: 5 秒 |
--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
|
可选。支持移动测试。 包含在命令中,以指示每个移动测试运行等待合适的设备变得可用,而不是在没有可用设备时立即设为失败。 |
手动创建 .json 文件以定义测试运行信息
与 GUI Web、移动、Java 和 API 测试相关
手动创建 .json 文件以指定要并行运行的多个测试并为每个测试运行定义测试信息。然后,直接从命令行引用 .json 文件。
要创建 .json 文件并使用该文件开始并行测试,请执行以下操作:
-
在 .json 文件中,为每个测试运行添加单独的行。使用 .json 选项描述要用于每个运行的环境、数据表和参数。
提示: 您可以使用 ParallelRunner UI 工具自动创建 .json 文件。有关详细信息,请参阅 配置并行测试运行。
-
对于 GUI 移动测试,您可以将 Digital Lab (UFT Mobile) 连接设置与测试信息一起包含在 .json 文件中。有关如何定义连接设置,请参阅示例 .json 文件。
.json 文件优先于在 UFT One 的“工具”>“选项”>“GUI 测试”>“移动”中定义的连接设置。
-
使用以下命令行选项在命令行中引用 .json 文件:
-c
字符串。定义 .json 配置文件的路径。
使用以下语法开始并行测试:
例如:
ParallelRunner -c parallelexecution.json
-
添加其他命令行选项以配置运行结果。有关详细信息,请参阅 -o、-rl 和 -rr。
这些选项是唯一可以与 .json 配置文件一起使用的命令行选项。任何其他命令行选项都将被忽略。
请参考以下示例文件。在此文件中,最后一个测试同时在本地桌面浏览器和移动设备上运行。另请参阅包含同步的示例 .json 配置文件。
{
"reportPath": "C:\\parallelexecution",
"reportName":"My Report Title",
"waitForEnvironment":true,
"parallelRuns": [
{
"test": "C:\\Users\\qtp\\Documents\\UFT One",
"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\\UFT One",
"reportSuffix": "ID_HT69K0201987",
"env": {
"mobile": {
"device": {
"deviceID": "HT69K0201987"
}
}
}
},
{
"test": "C:\\Users\\qtp\\Documents\\API Test",
"reportSuffix": "API"
} ,
{
"test": "C:\\Users\\qtp\\Documents\\UFT One",
"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 文件中定义以下选项 (区分大小写):
reportPath |
字符串。定义要用于保存测试运行结果的路径。 默认情况下,运行结果保存在 %Temp%\TempResults 中。 |
reportName |
字符串。定义报告名称,当您打开并行运行的摘要报告时,该名称将显示在浏览器选项卡中。默认情况下,报告名称与 .json 文件名相同。 自定义此名称,以帮助在同时打开多个报告时区分不同的运行。为此,UFT One 还会为每个报告名称添加时间戳。 |
测试 |
字符串。定义要运行的 UFT One 测试所在文件夹的路径。 |
reportSuffix |
字符串。定义要附加到运行结果文件名末尾的后缀。例如,您可能想要添加指示测试运行环境的后缀。 示例: 默认值: "[N]"。此值指示当前结果实例的索引号 (如果同一并行运行中的同一测试存在多个结果)。 注:
|
browser |
字符串。定义在运行 Web 测试时要使用的浏览器。 受支持的值包括: Chrome、Chrome Headless、ChromiumEdge、Edge、IE、IE64、Firefox、Firefox64、Safari 注意:
|
deviceID |
字符串。为 Digital Lab (UFT Mobile) 设备实验室中的特定设备定义设备 ID。 注: 如果同时提供了 deviceID 和设备功能属性,则将忽略设备功能属性。 |
manufacturer |
字符串。定义设备制造商。 |
model |
字符串。定义设备型号。 |
osVersion |
字符串。定义设备操作系统版本。 以下之一:
|
osType |
定义设备操作系统。 以下之一:
|
字符串。支持 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 |
将此选项设置为 |
主机名 / 端口 |
Digital Lab (UFT Mobile) 服务器的 IP 地址和端口号。 默认端口: 8080 |
AuthType |
连接到 Digital Lab (UFT Mobile) 时要使用的身份验证模式。 可用值:
|
用户名 / 密码 | Digital Lab (UFT Mobile) 服务器的登录凭据。 |
ClientId / SecretKey / TenantId (UFT One 版本 2023 及更高版本) |
从 Digital Lab (UFT Mobile) 收到的访问密钥。 |
使用条件同步并行运行
要同步和控制并行运行,可以在测试运行之间创建依赖关系并控制运行的开始时间。(仅在 ParallelRunner 命令中使用 .json 文件时才支持)。
使用条件,测试运行可以执行以下一项或多项操作:
- 等待几秒钟,然后再开始运行。
- 在其他测试运行之后运行。
- 仅在其他测试运行并达到特定状态后才开始。
对于在 .json 文件中定义的每个测试运行,请创建用于控制运行开始时间的条件。使用如下所述的元素在 test 部分下构建条件。
您可以创建以下类型的条件:
- 简单条件,其中包含一个或多个 wait 语句。
- 组合条件,其中包含多个条件和一个用于指定是否必须满足所有条件的 AND/OR 运算符。
下面是提供同步并行运行的示例 .json 配置文件:
{
"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 提供单独的列。
另请参见: