- 概述
- 开始使用
- 概念
- 使用 UiPath CLI
- 操作指南
- CI/CD 方法
- 命令参考
- 迁移
- 参考与支持
“uip tm testcases”的语法和选项,用于管理测试用例,包括创建、列出、更新、删除、链接自动化和测试用例日志管理。
uip tm testcases manages test cases within a Test Manager project: create, list, update, delete, link or unlink an Orchestrator automation, inspect historical results, and add or remove test cases from a test set. It also provides testcases run — a way to execute one or more test cases directly from an Orchestrator package. This page also documents uip tm testcaselog list-assertions, testcaselog start, and testcaselog finish (registered under testcaselog, singular), which read assertion artifacts and record manual log entries for a test case log.
测试用例是作者身份单位。在使用testcases link-automation链接到包入口点后,它将变为可运行状态。然后,测试用例可以作为测试集的一部分执行(请参阅测试集),也可以直接通过testcases run执行。
切勿在uip tm pack为 Playwright 项目创建的测试用例上运行testcases link-automation 。Playwright 测试用例会在打包时提取期间自动链接;相反,在它们上面手动运行 link-automation 会遵循 RPA 链接管道,并会损坏该关联。如果使用 --no-create-test-cases 打包,请改用 Test Manager 用户界面中的“选择自动化”流程。
大纲
uip tm testcases create --project-key <key> --name <name> [--description <text>] [--version <version>]
uip tm testcases list --project-key <key> [--filter <text>]
uip tm testcases list-result-history --project-key <key> --test-case-id <uuid> [--filter <text>] [--only-failed] [--results <results...>] [--statuses <statuses...>] [--duration-period <period>] [--top <number>] [--skip <number>]
uip tm testcases update --project-key <key> --test-case-key <key> [--name <name>] [--description <text>] [--pre-condition <text>] [--post-condition <text>]
uip tm testcases delete --project-key <key> --test-case-key <key> [-y]
uip tm testcases link-automation --project-key <key> --test-case-key <key> --folder-key <uuid> --package-name <name> --test-name <name>
uip tm testcases link-package --project-key <key> --folder-key <uuid> [--package-name <name>] [--test-name <name...>] [--dry-run]
uip tm testcases unlink-automation --project-key <key> --test-case-key <key>
uip tm testcases list-automations --project-key <key> [--folder-key <uuid>] [--package-name <name>]
uip tm testcases list-testsets --project-key <key> --test-case-key <key>
uip tm testcases run --project-key <key> --test-case-id <uuid...> --name <name> --execution-type <type> [--async] [--folder-key <uuid>] [--runtime-type <type>] [--robot-user-key <uuid>] [--machine-key <uuid>] [--host-machine-name <name>] [--service-user-name <name>] [--test-set-packages <json>]
uip tm testcases add --test-set-key <key> (--test-case-keys <keys...> | --labels <labels...> [--limit <count>])
uip tm testcases remove --test-set-key <key> --test-case-keys <keys> [-y]
uip tm testcases list-steps --project-key <key> --test-case-id <uuid>
uip tm testcases steps list --project-key <key> --test-case-id <uuid>
uip tm testcases steps get --project-key <key> --step-id <uuid>
uip tm testcases steps add --project-key <key> --test-case-id <uuid> [--description <text>] [--expected-result <text>] [--action-type <type>] [--clipboard-data <text>] [--order-no <n>] [--step <json>...]
uip tm testcases steps update --project-key <key> --step-id <uuid> [--description <text>] [--expected-result <text>] [--action-type <type>] [--clipboard-data <text>]
uip tm testcases steps move --project-key <key> --step-id <uuid> --target-position <n>
uip tm testcases steps delete --project-key <key> --step-id <uuid> [-y]
uip tm testcaselog list-assertions --project-key <key> --test-case-log-id <uuid>
uip tm testcaselog start --project-key <key> --execution-id <uuid> --test-case-id <uuid> [--run-id <number>]
uip tm testcaselog finish --project-key <key> --execution-id <uuid> --test-case-id <uuid> --result <result> --has-error <boolean> --executed-by <email> [--detail-link <url>] [--run-id <number>] [--is-post-condition-met <boolean>] (--step-logs <json> | --step-logs-file <path>)
uip tm testcases create --project-key <key> --name <name> [--description <text>] [--version <version>]
uip tm testcases list --project-key <key> [--filter <text>]
uip tm testcases list-result-history --project-key <key> --test-case-id <uuid> [--filter <text>] [--only-failed] [--results <results...>] [--statuses <statuses...>] [--duration-period <period>] [--top <number>] [--skip <number>]
uip tm testcases update --project-key <key> --test-case-key <key> [--name <name>] [--description <text>] [--pre-condition <text>] [--post-condition <text>]
uip tm testcases delete --project-key <key> --test-case-key <key> [-y]
uip tm testcases link-automation --project-key <key> --test-case-key <key> --folder-key <uuid> --package-name <name> --test-name <name>
uip tm testcases link-package --project-key <key> --folder-key <uuid> [--package-name <name>] [--test-name <name...>] [--dry-run]
uip tm testcases unlink-automation --project-key <key> --test-case-key <key>
uip tm testcases list-automations --project-key <key> [--folder-key <uuid>] [--package-name <name>]
uip tm testcases list-testsets --project-key <key> --test-case-key <key>
uip tm testcases run --project-key <key> --test-case-id <uuid...> --name <name> --execution-type <type> [--async] [--folder-key <uuid>] [--runtime-type <type>] [--robot-user-key <uuid>] [--machine-key <uuid>] [--host-machine-name <name>] [--service-user-name <name>] [--test-set-packages <json>]
uip tm testcases add --test-set-key <key> (--test-case-keys <keys...> | --labels <labels...> [--limit <count>])
uip tm testcases remove --test-set-key <key> --test-case-keys <keys> [-y]
uip tm testcases list-steps --project-key <key> --test-case-id <uuid>
uip tm testcases steps list --project-key <key> --test-case-id <uuid>
uip tm testcases steps get --project-key <key> --step-id <uuid>
uip tm testcases steps add --project-key <key> --test-case-id <uuid> [--description <text>] [--expected-result <text>] [--action-type <type>] [--clipboard-data <text>] [--order-no <n>] [--step <json>...]
uip tm testcases steps update --project-key <key> --step-id <uuid> [--description <text>] [--expected-result <text>] [--action-type <type>] [--clipboard-data <text>]
uip tm testcases steps move --project-key <key> --step-id <uuid> --target-position <n>
uip tm testcases steps delete --project-key <key> --step-id <uuid> [-y]
uip tm testcaselog list-assertions --project-key <key> --test-case-log-id <uuid>
uip tm testcaselog start --project-key <key> --execution-id <uuid> --test-case-id <uuid> [--run-id <number>]
uip tm testcaselog finish --project-key <key> --execution-id <uuid> --test-case-id <uuid> --result <result> --has-error <boolean> --executed-by <email> [--detail-link <url>] [--run-id <number>] [--is-post-condition-met <boolean>] (--step-logs <json> | --step-logs-file <path>)
list-assertions, start, and finish are registered under uip tm testcaselog (singular). uip tm testcaselogs list-assertions and uip tm testcaselogs start/finish do not exist as commands.
All verbs honor the global options and the standard exit codes.
--log-level <level> (default Information) is available on create, list, list-result-history, update, delete, link-automation, link-package, unlink-automation, list-automations, list-testsets, add, and remove. It does not exist on run, any steps subcommand (including the list-steps alias), or testcaselog start/finish/list-assertions.
创建 UIP TM 测试用例
在项目中创建一个新的测试用例。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--name <name> | 必需。测试用例名称。 |
--description <text> | 自由格式说明。默认为空。 |
--version <version> | 测试用例版本字符串。默认为 1.0.0。 |
示例
uip tm testcases create \
--project-key DEMO \
--name "Login smoke" \
--description "Logs in and out"
uip tm testcases create \
--project-key DEMO \
--name "Login smoke" \
--description "Logs in and out"
数据形状
{
"Code": "TestCaseCreate",
"Data": {
"TestCaseKey": "DEMO:1",
"Id": "a1b2c3d4-0000-0000-0000-000000000001",
"Name": "Login smoke",
"Description": "Logs in and out",
"Version": "1.0.0"
}
}
{
"Code": "TestCaseCreate",
"Data": {
"TestCaseKey": "DEMO:1",
"Id": "a1b2c3d4-0000-0000-0000-000000000001",
"Name": "Login smoke",
"Description": "Logs in and out",
"Version": "1.0.0"
}
}
TestCaseKey (公共PROJECT:N标识符)是传递给其他动词的内容。list-result-history和list-testsets需要内部Id (UUID)。
uip tm 测试用例列表
列出项目中的所有测试用例。CLI 会自动对结果进行分页。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。要列表的项目。 |
--filter <text> | 按名称或键筛选(服务器端搜索)。 |
示例
uip tm testcases list --project-key DEMO --filter login
uip tm testcases list --project-key DEMO --filter login
数据形状
{
"Code": "TestCasesList",
"Data": [
{
"TestCaseKey": "DEMO:1",
"Name": "Login smoke",
"Description": "Logs in and out"
}
]
}
{
"Code": "TestCasesList",
"Data": [
{
"TestCaseKey": "DEMO:1",
"Name": "Login smoke",
"Description": "Logs in and out"
}
]
}
uip tm 测试用例列表结果历史记录
列出单个测试用例的历史测试用例日志。获取内部--test-case-id (UUID) — 通过testcases list或从上一个TestCaseCreate输出中查找 UUID。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--test-case-id <uuid> | 必需。内部测试用例 UUID。 |
--filter <text> | 按名称搜索测试用例日志。 |
--only-failed | “仅显示失败的日志”的快捷方式(默认为 false)。 |
--results <results...> | 要包含的以空格分隔的结果。接受的值来自 SDK Result 枚举。 |
--statuses <statuses...> | 用空格分隔的执行状态。接受的值来自 SDK TestCaseLogExecutionStatus 枚举。 |
--duration-period <period> | 按持续时间存储桶筛选。接受的值来自 SDK DurationPeriod 枚举。 |
--top <number> | 页面大小。默认为 50。 |
--skip <number> | 要跳过的结果。默认为 0。 |
--results 、 --statuses和--duration-period的确切可接受值由已安装的工具版本附带的 Test Manager SDK 枚举在运行时生成。运行uip tm testcases list-result-history --help以查看当前集合。
示例
uip tm testcases list-result-history \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--only-failed
uip tm testcases list-result-history \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--only-failed
数据形状
{
"Code": "TestCaseResultHistory",
"Data": [
{
"Id": "b2c3d4e5-0000-0000-0000-000000000001",
"Result": "Failed",
"Status": "Finished",
"ExecutionEnd": "2025-04-15T12:00:00Z"
}
]
}
{
"Code": "TestCaseResultHistory",
"Data": [
{
"Id": "b2c3d4e5-0000-0000-0000-000000000001",
"Result": "Failed",
"Status": "Finished",
"ExecutionEnd": "2025-04-15T12:00:00Z"
}
]
}
uip tm 测试用例更新
Rename a test case, or change its description, pre-condition, or post-condition. At least one of these fields is required.
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--test-case-key <key> | 必需。测试用例键(例如 DEMO:1)。 |
--name <name> | 新名称。 |
--description <text> | 新说明。 |
--pre-condition <text> | New precondition — what must be true before running the test. |
--post-condition <text> | New postcondition — what should be true after running the test. |
示例
uip tm testcases update \
--project-key DEMO \
--test-case-key DEMO:1 \
--name "Login smoke (2026)"
uip tm testcases update \
--project-key DEMO \
--test-case-key DEMO:1 \
--name "Login smoke (2026)"
数据形状
{
"Code": "TestCaseUpdate",
"Data": {
"TestCaseKey": "DEMO:1",
"Name": "Login smoke (2026)",
"Description": "Logs in and out",
"PreCondition": "User account exists",
"PostCondition": "User is logged out",
"Result": "Updated"
}
}
{
"Code": "TestCaseUpdate",
"Data": {
"TestCaseKey": "DEMO:1",
"Name": "Login smoke (2026)",
"Description": "Logs in and out",
"PreCondition": "User account exists",
"PostCondition": "User is logged out",
"Result": "Updated"
}
}
uip tm 测试用例删除
按测试用例的密钥删除测试用例。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--test-case-key <key> | 必需。测试用例键(例如 DEMO:1)。 |
-y, --yes | 跳过确认提示。在非交互式环境中为必要项。 |
示例
uip tm testcases delete \
--project-key DEMO \
--test-case-key DEMO:1 \
--yes
uip tm testcases delete \
--project-key DEMO \
--test-case-key DEMO:1 \
--yes
数据形状
{
"Code": "TestCaseDelete",
"Data": {
"TestCaseKey": "DEMO:1",
"Id": "a1b2c3d4-0000-0000-0000-000000000001",
"Result": "Deleted"
}
}
{
"Code": "TestCaseDelete",
"Data": {
"TestCaseKey": "DEMO:1",
"Id": "a1b2c3d4-0000-0000-0000-000000000001",
"Result": "Deleted"
}
}
uip tm 测试用例链接自动化
将 Orchestrator 包入口点绑定到测试用例。这就是使测试用例在测试集中可执行的原因。该命令在内部解析来自 --folder-key 的文件夹显示名称,按名称查找匹配的包入口点,然后将绑定存储到测试用例上。对于pack创建的 Playwright 测试用例,请参阅上面的警告。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--test-case-key <key> | 必需。要绑定的测试用例。 |
--folder-key <uuid> | 必需。Orchestrator 文件夹 UUID(来自 uip or folders list)。 |
--package-name <name> | 必需。Orchestrator 包标识符(例如 InvoiceTests)。 |
--test-name <name> | 必需。包中的测试用例名称(入口点名称)。 |
示例
uip tm testcases link-automation \
--project-key DEMO \
--test-case-key DEMO:1 \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests \
--test-name SmokeTest
uip tm testcases link-automation \
--project-key DEMO \
--test-case-key DEMO:1 \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests \
--test-name SmokeTest
数据形状
{
"Code": "TestCaseLinkAutomation",
"Data": {
"TestCaseKey": "DEMO:1",
"PackageName": "InvoiceTests",
"PackageSource": "Shared",
"TestName": "SmokeTest",
"Result": "Linked"
}
}
{
"Code": "TestCaseLinkAutomation",
"Data": {
"TestCaseKey": "DEMO:1",
"PackageName": "InvoiceTests",
"PackageSource": "Shared",
"TestName": "SmokeTest",
"Result": "Linked"
}
}
uip tm testcases link-package
Create and link a test case for every test in an Orchestrator package, in one call — the bulk counterpart to link-automation, which links one existing test case to one automation. By default it links every test the folder exposes; scope it to one package with --package-name, or to specific tests with --test-name. Each test either creates a new test case (Action: "Created") or reuses one already linked to that automation (Action: "Reused").
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--folder-key <uuid> | 必需。Orchestrator 文件夹 UUID(来自 uip or folders list)。 |
--package-name <name> | Only link tests from this package (case-insensitive exact match). Omit to link every test the folder exposes. |
--test-name <name...> | Only link these tests (case-insensitive, repeatable). Omit to link all of them. |
--dry-run | Preview which test cases would be created, reused, and linked, without writing anything. |
示例
# Create and link a test case for every test in one Orchestrator package
uip tm testcases link-package \
--project-key DEMO \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests
# Create and link a test case for every test in one Orchestrator package
uip tm testcases link-package \
--project-key DEMO \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests
# Preview what would be created and linked, without writing
uip tm testcases link-package \
--project-key DEMO \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests \
--dry-run
# Preview what would be created and linked, without writing
uip tm testcases link-package \
--project-key DEMO \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests \
--dry-run
# Link only two named tests out of the package
uip tm testcases link-package \
--project-key DEMO \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests \
--test-name SmokeTest RegressionTest
# Link only two named tests out of the package
uip tm testcases link-package \
--project-key DEMO \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests \
--test-name SmokeTest RegressionTest
数据形状
{
"Code": "TestCaseLinkPackage",
"Data": [
{
"TestName": "SmokeTest",
"PackageName": "InvoiceTests",
"PackageVersion": "1.0.2",
"TestCaseKey": "DEMO:7",
"TestCaseId": "a1b2c3d4-0000-0000-0000-000000000007",
"Action": "Created"
},
{
"TestName": "RegressionTest",
"PackageName": "InvoiceTests",
"PackageVersion": "1.0.2",
"TestCaseKey": "DEMO:3",
"TestCaseId": "a1b2c3d4-0000-0000-0000-000000000003",
"Action": "Reused"
}
]
}
{
"Code": "TestCaseLinkPackage",
"Data": [
{
"TestName": "SmokeTest",
"PackageName": "InvoiceTests",
"PackageVersion": "1.0.2",
"TestCaseKey": "DEMO:7",
"TestCaseId": "a1b2c3d4-0000-0000-0000-000000000007",
"Action": "Created"
},
{
"TestName": "RegressionTest",
"PackageName": "InvoiceTests",
"PackageVersion": "1.0.2",
"TestCaseKey": "DEMO:3",
"TestCaseId": "a1b2c3d4-0000-0000-0000-000000000003",
"Action": "Reused"
}
]
}
With --dry-run, the Code is TestCaseLinkPackageDryRun instead, Action values become WouldCreate/WouldReuse, and TestCaseKey/TestCaseId are empty strings since nothing was actually written.
uip tm 测试用例取消链接自动化
从测试用例中删除自动化绑定。取消链接后,在再次链接之前,测试用例无法再执行。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--test-case-key <key> | 必需。要取消链接的测试用例。 |
示例
uip tm testcases unlink-automation \
--project-key DEMO \
--test-case-key DEMO:1
uip tm testcases unlink-automation \
--project-key DEMO \
--test-case-key DEMO:1
数据形状
{
"Code": "TestCaseUnlinkAutomation",
"Data": {
"TestCaseKey": "DEMO:1",
"Result": "Unlinked"
}
}
{
"Code": "TestCaseUnlinkAutomation",
"Data": {
"TestCaseKey": "DEMO:1",
"Result": "Unlinked"
}
}
uip tm 测试用例列表自动化
列出 Orchestrator 文件夹中可用的测试入口点。使用此功能来发现要传递给 --package-name/--test-namelink-automation 的值。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目(用于限定查找的范围)。 |
--folder-key <uuid> | Orchestrator folder UUID. Omit to search across the tenant feed instead of one folder. |
--package-name <name> | Filter the list to one package (case-insensitive exact match, not a substring search). |
示例
uip tm testcases list-automations \
--project-key DEMO \
--folder-key f0f0f0f0-0000-0000-0000-000000000001
uip tm testcases list-automations \
--project-key DEMO \
--folder-key f0f0f0f0-0000-0000-0000-000000000001
数据形状
{
"Code": "TestAutomationsList",
"Data": [
{
"PackageName": "InvoiceTests",
"TestName": "SmokeTest",
"PackageVersion": "1.0.2"
}
]
}
{
"Code": "TestAutomationsList",
"Data": [
{
"PackageName": "InvoiceTests",
"TestName": "SmokeTest",
"PackageVersion": "1.0.2"
}
]
}
uip tm 测试用例列表测试集
列出包含给定测试用例的每个测试集。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--test-case-key <key> | 必需。测试用例键(例如 DEMO:1)。 |
示例
uip tm testcases list-testsets \
--project-key DEMO \
--test-case-key DEMO:1
uip tm testcases list-testsets \
--project-key DEMO \
--test-case-key DEMO:1
数据形状
{
"Code": "TestCaseTestSetsList",
"Data": [
{
"TestSetKey": "DEMO:10",
"Name": "Smoke Suite",
"FolderKey": "f0f0f0f0-0000-0000-0000-000000000001"
}
]
}
{
"Code": "TestCaseTestSetsList",
"Data": [
{
"TestSetKey": "DEMO:10",
"Name": "Smoke Suite",
"FolderKey": "f0f0f0f0-0000-0000-0000-000000000001"
}
]
}
运行 uip tm 测试用例
直接从 Orchestrator 包运行一个或多个测试用例,而无需先创建测试集。testcases run启动执行并返回执行记录。有关此功能的更多信息,请参阅 Test Manager 文档中的执行不使用测试集的测试用例。
testcases run默认情况下是同步的,它会受到阻止,直到确认执行记录为止。要在排队后立即返回,请传递--async 。要在执行完成之前阻止,请将返回的Id通过管道传输到uip tm wait 。
何时使用testcases run与testsets run
- 使用
testcases run直接从包中按需执行测试用例。 - 使用
testsets run执行指定的测试用例组,系统会随着时间的推移在 Test Manager 中管理这些用例。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | Test Manager 项目密钥(例如 DEMO)。如果可从上下文中派生,则为可选项。 |
--test-case-id <uuid...> | 必需。要运行的一个或多个测试用例 UUID,以空格分隔。从 testcases list 获取 UUID。 |
--execution-type <type> | 必需。执行类型:automated、manual、mixed 或 none。 |
--name <name> | 执行的显示名称。 |
--async | 排队后立即返回,无需等待服务器确认执行已开始。无需等待执行记录完全创建即可返回。 |
--folder-key <uuid> | 要在其中运行的 Orchestrator 文件夹。当测试用例链接到特定文件夹中的自动化时为必需。 |
--runtime-type <type> | 机器人 runtime 类型覆盖。接受值:nonProduction、attended、unattended、rpaDeveloper、studioX、headless、rpaDeveloperPro、testAutomation、automationCloud、serverless、automationKit、serverlessTestAutomation 、automationCloudTestAutomation、attendedStudioWeb、hosting、assistantWeb、processOrchestration、agentService、appTest、performanceTest、businessRule、caseManagement。 |
--robot-user-key <uuid> | 执行目标的机器人用户密钥。 |
--machine-key <uuid> | 执行目标的计算机密钥。 |
--host-machine-name <name> | 执行目标的主机名。 |
--service-user-name <name> | 执行目标的服务用户名。 |
--test-set-packages <json> | 包覆盖的 JSON 数组:[{"packageName":"Pkg","version":"1.0.0"}]。 |
示例
# Simplest — run a single test case (blocks until execution record is created)
uip tm testcases run \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--execution-type automated \
--name "Login smoke run"
# Simplest — run a single test case (blocks until execution record is created)
uip tm testcases run \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--execution-type automated \
--name "Login smoke run"
# Run multiple test cases asynchronously, then wait for completion
id=$(uip tm testcases run \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 a1b2c3d4-0000-0000-0000-000000000002 \
--execution-type automated \
--name "Smoke run" \
--async \
--output-filter Id)
uip tm wait --execution-id "$id" --project-key DEMO --timeout 900
uip tm report get --execution-id "$id" --project-key DEMO
# Run multiple test cases asynchronously, then wait for completion
id=$(uip tm testcases run \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 a1b2c3d4-0000-0000-0000-000000000002 \
--execution-type automated \
--name "Smoke run" \
--async \
--output-filter Id)
uip tm wait --execution-id "$id" --project-key DEMO --timeout 900
uip tm report get --execution-id "$id" --project-key DEMO
# Full override — specify folder, runtime, machine, and package version
uip tm testcases run \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--execution-type automated \
--name "Smoke run" \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--runtime-type unattended \
--machine-key 33333333-4444-5555-6666-777777777777 \
--test-set-packages '[{"packageName":"InvoiceTests","version":"1.0.2"}]'
# Full override — specify folder, runtime, machine, and package version
uip tm testcases run \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--execution-type automated \
--name "Smoke run" \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--runtime-type unattended \
--machine-key 33333333-4444-5555-6666-777777777777 \
--test-set-packages '[{"packageName":"InvoiceTests","version":"1.0.2"}]'
数据形状
{
"Code": "TestCaseRun",
"Data": {
"Id": "b2c3d4e5-0000-0000-0000-000000000001",
"Name": "Login smoke run",
"ProjectId": "00000000-0000-0000-0000-000000000abc",
"TestSetId": "a1b2c3d4-0000-0000-0000-000000000010",
"TestSetObjKey": "DEMO:10",
"Status": "Running",
"ExecutionType": "automated",
"Source": "Manual",
"RunId": 1,
"FolderKey": "f0f0f0f0-0000-0000-0000-000000000001",
"ExecutionStart": "2025-04-15T10:30:00Z",
"EnableCoverage": false,
"EnforceExecutionOrder": false,
"AutopilotForRobotsSettings": { "Enabled": false },
"OrderedExecutionSettings": { "Enabled": false },
"VideoRecordingSettings": { "Enabled": false }
}
}
{
"Code": "TestCaseRun",
"Data": {
"Id": "b2c3d4e5-0000-0000-0000-000000000001",
"Name": "Login smoke run",
"ProjectId": "00000000-0000-0000-0000-000000000abc",
"TestSetId": "a1b2c3d4-0000-0000-0000-000000000010",
"TestSetObjKey": "DEMO:10",
"Status": "Running",
"ExecutionType": "automated",
"Source": "Manual",
"RunId": 1,
"FolderKey": "f0f0f0f0-0000-0000-0000-000000000001",
"ExecutionStart": "2025-04-15T10:30:00Z",
"EnableCoverage": false,
"EnforceExecutionOrder": false,
"AutopilotForRobotsSettings": { "Enabled": false },
"OrderedExecutionSettings": { "Enabled": false },
"VideoRecordingSettings": { "Enabled": false }
}
}
关键字段:
Id— 传递给uip tm wait、report get、result download、attachment download。Status: "Running"— 执行可能尚未调度。Source: "Manual"— 所有testcases run执行都被标记为手动触发。
端到端工作流:打包到结果
# 1. Discover your project key
uip tm project list --output json
# 2. Find the test case UUIDs you want to run
uip tm testcases list --project-key DEMO --filter "login" --output json
# 3. Find the folder that holds your package
uip or folders list --output json
# 4. Link the test case to the automation entry point
uip tm testcases link-automation \
--project-key DEMO \
--test-case-key DEMO:1 \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests \
--test-name SmokeTest
# 5. Run the test cases directly
id=$(uip tm testcases run \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--execution-type automated \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--name "PR #42 smoke" \
--output-filter Id)
# 6. Block until done (timeout in seconds — 15 minutes here)
uip tm wait \
--execution-id "$id" \
--project-key DEMO \
--timeout 900
# 7. Read the result
uip tm report get --execution-id "$id" --project-key DEMO
# 8. Download JUnit XML for CI
uip tm result download \
--execution-id "$id" \
--project-key DEMO \
--result-path ./junit.xml
# 9. Download screenshots and logs
uip tm attachment download \
--execution-id "$id" \
--project-key DEMO \
--only-failed \
--result-path ./attachments
# 1. Discover your project key
uip tm project list --output json
# 2. Find the test case UUIDs you want to run
uip tm testcases list --project-key DEMO --filter "login" --output json
# 3. Find the folder that holds your package
uip or folders list --output json
# 4. Link the test case to the automation entry point
uip tm testcases link-automation \
--project-key DEMO \
--test-case-key DEMO:1 \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--package-name InvoiceTests \
--test-name SmokeTest
# 5. Run the test cases directly
id=$(uip tm testcases run \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--execution-type automated \
--folder-key f0f0f0f0-0000-0000-0000-000000000001 \
--name "PR #42 smoke" \
--output-filter Id)
# 6. Block until done (timeout in seconds — 15 minutes here)
uip tm wait \
--execution-id "$id" \
--project-key DEMO \
--timeout 900
# 7. Read the result
uip tm report get --execution-id "$id" --project-key DEMO
# 8. Download JUnit XML for CI
uip tm result download \
--execution-id "$id" \
--project-key DEMO \
--result-path ./junit.xml
# 9. Download screenshots and logs
uip tm attachment download \
--execution-id "$id" \
--project-key DEMO \
--only-failed \
--result-path ./attachments
uip tm 测试用例添加
Add test cases to an existing test set, either by explicit keys or by label. Pass exactly one of --test-case-keys or --labels.
参数
无。
选项
| 标记 | 描述 |
|---|---|
--test-set-key <key> | 必需。测试集对象键(例如 DEMO:42)。 |
--test-case-keys <keys...> | Test case keys to add, space-separated (for example, DEMO:1 DEMO:2). Comma-separated values are also accepted. Mutually exclusive with --labels. |
--labels <labels...> | Space-separated label names. Adds every test case in the project carrying at least one of the labels — including the PW_Tag_*, PW_Project_*, PW_Suite_*, and PW_File_* labels applied by pack at ingestion. Mutually exclusive with --test-case-keys. |
--limit <count> | Maximum number of label-matched test cases to add. Only valid with --labels. Defaults to all matches. |
示例
# add by explicit keys
uip tm testcases add \
--test-set-key DEMO:42 \
--test-case-keys DEMO:1 DEMO:2
# add every test case carrying one of the given labels
uip tm testcases add \
--test-set-key DEMO:42 \
--labels PW_Tag_smoke PW_Project_chromium
# add by explicit keys
uip tm testcases add \
--test-set-key DEMO:42 \
--test-case-keys DEMO:1 DEMO:2
# add every test case carrying one of the given labels
uip tm testcases add \
--test-set-key DEMO:42 \
--labels PW_Tag_smoke PW_Project_chromium
数据形状
{
"Code": "TestSetAddTestCases",
"Data": {
"TestSetKey": "DEMO:42",
"Added": "DEMO:1, DEMO:2",
"Result": "Added"
}
}
{
"Code": "TestSetAddTestCases",
"Data": {
"TestSetKey": "DEMO:42",
"Added": "DEMO:1, DEMO:2",
"Result": "Added"
}
}
When adding by --labels, the response also includes MatchedLabels:
{
"Code": "TestSetAddTestCases",
"Data": {
"TestSetKey": "DEMO:42",
"Added": "DEMO:3, DEMO:4, DEMO:7",
"MatchedLabels": "PW_Tag_smoke, PW_Project_chromium",
"Result": "Added"
}
}
{
"Code": "TestSetAddTestCases",
"Data": {
"TestSetKey": "DEMO:42",
"Added": "DEMO:3, DEMO:4, DEMO:7",
"MatchedLabels": "PW_Tag_smoke, PW_Project_chromium",
"Result": "Added"
}
}
删除 UIP TM 测试用例
从测试集中删除一个或多个测试用例。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--test-set-key <key> | 必需。测试集对象键(例如 DEMO:42)。 |
--test-case-keys <keys> | 必需。要删除的以逗号分隔的测试用例键(例如,DEMO:1,DEMO:2)。 |
-y, --yes | 跳过确认提示。在非交互式环境中为必要项。 |
示例
uip tm testcases remove \
--test-set-key DEMO:42 \
--test-case-keys DEMO:1,DEMO:2 \
--yes
uip tm testcases remove \
--test-set-key DEMO:42 \
--test-case-keys DEMO:1,DEMO:2 \
--yes
数据形状
{
"Code": "TestSetRemoveTestCases",
"Data": {
"TestSetKey": "DEMO:42",
"Removed": "DEMO:1, DEMO:2",
"Result": "Removed"
}
}
{
"Code": "TestSetRemoveTestCases",
"Data": {
"TestSetKey": "DEMO:42",
"Removed": "DEMO:1, DEMO:2",
"Result": "Removed"
}
}
uip tm 测试用例列表步骤
列出测试用例的手动测试步骤。这是testcases steps list的别名。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。Test Manager 项目密钥(例如 DEMO)。 |
--test-case-id <uuid> | 必需。内部测试用例 UUID。 |
示例
uip tm testcases list-steps \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001
uip tm testcases list-steps \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001
数据形状
{
"Code": "TestCaseStepsList",
"Data": [
{
"Id": "d4e5f6a7-0000-0000-0000-000000000001",
"TestCaseId": "a1b2c3d4-0000-0000-0000-000000000001",
"OrderNo": 0,
"ActionType": "Manual",
"Description": "Open login page",
"ExpectedResult": "Login form is displayed"
}
]
}
{
"Code": "TestCaseStepsList",
"Data": [
{
"Id": "d4e5f6a7-0000-0000-0000-000000000001",
"TestCaseId": "a1b2c3d4-0000-0000-0000-000000000001",
"OrderNo": 0,
"ActionType": "Manual",
"Description": "Open login page",
"ExpectedResult": "Login form is displayed"
}
]
}
uip tm 测试用例步骤
testcases steps是一个子组,用于管理测试用例的各个手动步骤:列出、获取、添加、更新、移动和删除。
uip tm 测试用例步骤列表
按顺序列出测试用例的步骤。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。Test Manager 项目密钥。 |
--test-case-id <uuid> | 必需。内部测试用例 UUID。 |
示例
uip tm testcases steps list \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001
uip tm testcases steps list \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001
数据形状
{
"Code": "TestCaseStepsList",
"Data": [
{
"Id": "d4e5f6a7-0000-0000-0000-000000000001",
"OrderNo": 0,
"ActionType": "Manual",
"Description": "Open login page",
"ExpectedResult": "Login form is displayed"
}
]
}
{
"Code": "TestCaseStepsList",
"Data": [
{
"Id": "d4e5f6a7-0000-0000-0000-000000000001",
"OrderNo": 0,
"ActionType": "Manual",
"Description": "Open login page",
"ExpectedResult": "Login form is displayed"
}
]
}
获取 UIP TM 测试用例步骤
通过 UUID 获取单个步骤。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。Test Manager 项目密钥。 |
--step-id <uuid> | 必需。测试步骤 UUID(来自 steps list)。 |
示例
uip tm testcases steps get \
--project-key DEMO \
--step-id d4e5f6a7-0000-0000-0000-000000000001
uip tm testcases steps get \
--project-key DEMO \
--step-id d4e5f6a7-0000-0000-0000-000000000001
数据形状
{
"Code": "TestStepGet",
"Data": {
"Id": "d4e5f6a7-0000-0000-0000-000000000001",
"OrderNo": 0,
"ActionType": "Manual",
"Description": "Open login page",
"ExpectedResult": "Login form is displayed"
}
}
{
"Code": "TestStepGet",
"Data": {
"Id": "d4e5f6a7-0000-0000-0000-000000000001",
"OrderNo": 0,
"ActionType": "Manual",
"Description": "Open login page",
"ExpectedResult": "Login form is displayed"
}
}
添加 uip tm 测试用例步骤
向测试用例添加一个或多个步骤。对单个步骤使用内联标志,或对多个步骤使用--step <json> (可重复)。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。Test Manager 项目密钥。 |
--test-case-id <uuid> | 必需。要向其中添加步骤的测试用例。 |
--description <text> | 步骤说明(单步骤模式) 。 |
--expected-result <text> | 预期结果(单步模式) 。 |
--action-type <type> | 步骤操作类型(单步骤模式) 。 |
--clipboard-data <text> | 测试要为步骤复制的数据(单步骤模式) 。 |
--order-no <n> | 从 0 开始的插入位置;省略在末尾附加(单步模式) 。 |
--step <json> | 以 JSON 对象 ({"description":"...","expectedResult":"..."}) 形式呈现的步骤。重复此操作以添加多个步骤。 |
示例
# single step
uip tm testcases steps add \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--description "Open login page" \
--expected-result "Login form is displayed"
# multiple steps
uip tm testcases steps add \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--step '{"description":"Open login page","expectedResult":"Login form is shown"}' \
--step '{"description":"Enter credentials","clipboardData":"user@acme.com"}' \
--step '{"description":"Click submit","expectedResult":"Dashboard loads"}'
# single step
uip tm testcases steps add \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--description "Open login page" \
--expected-result "Login form is displayed"
# multiple steps
uip tm testcases steps add \
--project-key DEMO \
--test-case-id a1b2c3d4-0000-0000-0000-000000000001 \
--step '{"description":"Open login page","expectedResult":"Login form is shown"}' \
--step '{"description":"Enter credentials","clipboardData":"user@acme.com"}' \
--step '{"description":"Click submit","expectedResult":"Dashboard loads"}'
数据形状
{
"Code": "TestStepAdd",
"Data": {
"AddedCount": 1,
"Steps": [
{
"Id": "d4e5f6a7-0000-0000-0000-000000000001",
"TestCaseId": "a1b2c3d4-0000-0000-0000-000000000001",
"OrderNo": 0,
"ActionType": "",
"Description": "Open login page",
"ExpectedResult": "Login form is displayed",
"ClipboardData": ""
}
]
}
}
{
"Code": "TestStepAdd",
"Data": {
"AddedCount": 1,
"Steps": [
{
"Id": "d4e5f6a7-0000-0000-0000-000000000001",
"TestCaseId": "a1b2c3d4-0000-0000-0000-000000000001",
"OrderNo": 0,
"ActionType": "",
"Description": "Open login page",
"ExpectedResult": "Login form is displayed",
"ClipboardData": ""
}
]
}
}
Adding steps is not atomic: if one step in a multi-step --step batch fails, the steps before it remain created. The error message reports how many succeeded so you can inspect with steps list and retry only the remainder.
uip tm 测试用例步骤更新
更新步骤说明、预期结果、操作类型或剪贴板数据。必须至少提供其中一个字段。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。Test Manager 项目密钥。 |
--step-id <uuid> | 必需。测试步骤 UUID。 |
--description <text> | 新说明。 |
--expected-result <text> | 新的预期结果。 |
--action-type <type> | 新的操作类型。 |
--clipboard-data <text> | 新剪贴板数据。 |
示例
uip tm testcases steps update \
--project-key DEMO \
--step-id d4e5f6a7-0000-0000-0000-000000000001 \
--expected-result "Dashboard is shown"
uip tm testcases steps update \
--project-key DEMO \
--step-id d4e5f6a7-0000-0000-0000-000000000001 \
--expected-result "Dashboard is shown"
数据形状
{
"Code": "TestStepUpdate",
"Data": {
"StepId": "d4e5f6a7-0000-0000-0000-000000000001",
"Result": "Updated"
}
}
{
"Code": "TestStepUpdate",
"Data": {
"StepId": "d4e5f6a7-0000-0000-0000-000000000001",
"Result": "Updated"
}
}
uip tm 测试用例步骤移动
在测试用例顺序中,将步骤移动至新位置。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。Test Manager 项目密钥。 |
--step-id <uuid> | 必需。测试步骤 UUID。 |
--target-position <n> | 必需。从 0 开始的新位置(0 = 优先)。匹配 OrderNo 中的 steps list 字段。 |
示例
uip tm testcases steps move \
--project-key DEMO \
--step-id d4e5f6a7-0000-0000-0000-000000000001 \
--target-position 2
uip tm testcases steps move \
--project-key DEMO \
--step-id d4e5f6a7-0000-0000-0000-000000000001 \
--target-position 2
数据形状
{
"Code": "TestStepMove",
"Data": {
"StepId": "d4e5f6a7-0000-0000-0000-000000000001",
"TargetPosition": 2,
"Result": "Moved"
}
}
{
"Code": "TestStepMove",
"Data": {
"StepId": "d4e5f6a7-0000-0000-0000-000000000001",
"TargetPosition": 2,
"Result": "Moved"
}
}
uip tm 测试用例步骤删除
从测试用例中删除步骤。这是永久性的。
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。Test Manager 项目密钥。 |
--step-id <uuid> | 必需。测试步骤 UUID。 |
-y, --yes | 必需。确认此不可逆操作。 |
示例
uip tm testcases steps delete \
--project-key DEMO \
--step-id d4e5f6a7-0000-0000-0000-000000000001 \
--yes
uip tm testcases steps delete \
--project-key DEMO \
--step-id d4e5f6a7-0000-0000-0000-000000000001 \
--yes
数据形状
{
"Code": "TestStepDelete",
"Data": {
"StepId": "d4e5f6a7-0000-0000-0000-000000000001",
"Result": "Deleted"
}
}
{
"Code": "TestStepDelete",
"Data": {
"StepId": "d4e5f6a7-0000-0000-0000-000000000001",
"Result": "Deleted"
}
}
uip tm 测试用例日志列表断言
列出为单个测试用例日志记录的断言。每次运行测试用例都会产生一个测试用例日志;其断言是指自动化记录的各项单项检查。此动词表明测试用例日志标记为Failed原因。
This verb is registered under testcaselog (singular), alongside testcaselog start and testcaselog finish below — not under testcases or testcaselogs (plural). uip tm testcaselogs list-assertions does not exist.
参数
无。
选项
| 标记 | 描述 |
|---|---|
--test-case-log-id <uuid> | 必需。测试用例日志 UUID。从 uip tm executions testcaselogs list 或 uip tm testcases list-result-history 获取。 |
--project-key <key> | 必需。拥有的项目。 |
示例
uip tm testcaselog list-assertions \
--test-case-log-id a1b2c3d4-0000-0000-0000-000000000001 \
--project-key DEMO
uip tm testcaselog list-assertions \
--test-case-log-id a1b2c3d4-0000-0000-0000-000000000001 \
--project-key DEMO
数据形状
{
"Code": "TestCaseLogAssertions",
"Data": [
{ "Message": "Title contains 'Welcome'", "Succeeded": true },
{ "Message": "Button 'Login' visible", "Succeeded": false }
]
}
{
"Code": "TestCaseLogAssertions",
"Data": [
{ "Message": "Title contains 'Welcome'", "Succeeded": true },
{ "Message": "Button 'Login' visible", "Succeeded": false }
]
}
uip tm 测试用例日志启动
Start a test case execution within an existing test execution. Used by automations and integrations to record manual or mixed test case runs — most users don't call this directly.
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--execution-id <uuid> | Required. The test execution in which the test case is running. |
--test-case-id <uuid> | 必需。正在记录的测试用例的内部 UUID。 |
--run-id <number> | Run ID to record against. Omit to look it up automatically from the execution's current RunId. |
示例
uip tm testcaselog start \
--project-key DEMO \
--execution-id a1b2c3d4-0000-0000-0000-000000000001 \
--test-case-id b2c3d4e5-0000-0000-0000-000000000001
uip tm testcaselog start \
--project-key DEMO \
--execution-id a1b2c3d4-0000-0000-0000-000000000001 \
--test-case-id b2c3d4e5-0000-0000-0000-000000000001
数据形状
{
"Code": "TestCaseLogStart",
"Data": {
"Id": "c3d4e5f6-0000-0000-0000-000000000001",
"TestCaseId": "b2c3d4e5-0000-0000-0000-000000000001",
"ProjectId": "00000000-0000-0000-0000-000000000abc",
"TestExecutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"Result": "None",
"BusinessResult": "None",
"OriginalResult": "None",
"Status": "Running",
"ExecutionType": "manual",
"HasError": false,
"ExecutionStart": "2025-04-15T10:30:00Z",
"ExecutionEnd": null,
"ExecutedBy": "alice@example.com",
"RunId": 1,
"Updated": "2025-04-15T10:30:00Z"
}
}
{
"Code": "TestCaseLogStart",
"Data": {
"Id": "c3d4e5f6-0000-0000-0000-000000000001",
"TestCaseId": "b2c3d4e5-0000-0000-0000-000000000001",
"ProjectId": "00000000-0000-0000-0000-000000000abc",
"TestExecutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"Result": "None",
"BusinessResult": "None",
"OriginalResult": "None",
"Status": "Running",
"ExecutionType": "manual",
"HasError": false,
"ExecutionStart": "2025-04-15T10:30:00Z",
"ExecutionEnd": null,
"ExecutedBy": "alice@example.com",
"RunId": 1,
"Updated": "2025-04-15T10:30:00Z"
}
}
Id is the test case log UUID — pass it to uip tm teststeplog list or testcaselog list-assertions once the run is finished. The full response includes many more fields (AutomationId, JobKey, PreCondition, PostCondition, and others) mostly empty at start time; only the fields relevant to tracking progress are shown here.
uip tm 测试用例日志完成
Finish a test case execution started with testcaselog start, recording the overall result and (optionally) every step result in one call.
There is no --test-case-log-id or --info flag on this command. finish re-identifies the run via --execution-id + --test-case-id (the same pair passed to start), not by the log UUID start returned.
参数
无。
选项
| 标记 | 描述 |
|---|---|
--project-key <key> | 必需。拥有的项目。 |
--execution-id <uuid> | Required. The test execution passed to testcaselog start. |
--test-case-id <uuid> | Required. The test case passed to testcaselog start. |
--result <result> | Required. Overall result (from the SDK Result enum, for example Passed, Failed). |
--has-error <boolean> | Required. Mark the execution as having an error (true/false). |
--executed-by <email> | Required. Email of the user who executed the test. |
--detail-link <url> | URL with additional execution details. |
--run-id <number> | Run ID to record against. Omit to look it up automatically from the execution's current RunId. |
--is-post-condition-met <boolean> | Mark whether the post-condition was met. |
--step-logs <json> | JSON array of step log objects to record for this test case execution. Mutually exclusive with --step-logs-file. |
--step-logs-file <path> | Path to a JSON file with the same shape as --step-logs. Mutually exclusive with --step-logs. |
示例
# finish with step results inline
uip tm testcaselog finish \
--project-key DEMO \
--execution-id a1b2c3d4-0000-0000-0000-000000000001 \
--test-case-id b2c3d4e5-0000-0000-0000-000000000001 \
--result Passed \
--has-error false \
--executed-by alice@example.com \
--is-post-condition-met true \
--step-logs '[{"id":"3fa85f64-0000-0000-0000-000000000001","testStepId":"d4e5f6a7-0000-0000-0000-000000000001","result":"Passed","orderNo":1,"hasError":false,"hasAttachment":false}]'
# finish with step results loaded from a file
uip tm testcaselog finish \
--project-key DEMO \
--execution-id a1b2c3d4-0000-0000-0000-000000000001 \
--test-case-id b2c3d4e5-0000-0000-0000-000000000001 \
--result Failed \
--has-error true \
--executed-by alice@example.com \
--step-logs-file ./step-logs.json
# finish with step results inline
uip tm testcaselog finish \
--project-key DEMO \
--execution-id a1b2c3d4-0000-0000-0000-000000000001 \
--test-case-id b2c3d4e5-0000-0000-0000-000000000001 \
--result Passed \
--has-error false \
--executed-by alice@example.com \
--is-post-condition-met true \
--step-logs '[{"id":"3fa85f64-0000-0000-0000-000000000001","testStepId":"d4e5f6a7-0000-0000-0000-000000000001","result":"Passed","orderNo":1,"hasError":false,"hasAttachment":false}]'
# finish with step results loaded from a file
uip tm testcaselog finish \
--project-key DEMO \
--execution-id a1b2c3d4-0000-0000-0000-000000000001 \
--test-case-id b2c3d4e5-0000-0000-0000-000000000001 \
--result Failed \
--has-error true \
--executed-by alice@example.com \
--step-logs-file ./step-logs.json
数据形状
{
"Code": "TestCaseLogFinish",
"Data": {
"Id": "c3d4e5f6-0000-0000-0000-000000000001",
"TestCaseId": "b2c3d4e5-0000-0000-0000-000000000001",
"ProjectId": "00000000-0000-0000-0000-000000000abc",
"TestExecutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"Result": "Passed",
"BusinessResult": "Passed",
"OriginalResult": "Passed",
"Status": "Finished",
"ExecutionType": "manual",
"HasError": false,
"ExecutionStart": "2025-04-15T10:30:00Z",
"ExecutionEnd": "2025-04-15T10:31:00Z",
"ExecutedBy": "alice@example.com",
"RunId": 1,
"IsPostConditionMet": true,
"Updated": "2025-04-15T10:31:00Z"
}
}
{
"Code": "TestCaseLogFinish",
"Data": {
"Id": "c3d4e5f6-0000-0000-0000-000000000001",
"TestCaseId": "b2c3d4e5-0000-0000-0000-000000000001",
"ProjectId": "00000000-0000-0000-0000-000000000abc",
"TestExecutionId": "a1b2c3d4-0000-0000-0000-000000000001",
"Result": "Passed",
"BusinessResult": "Passed",
"OriginalResult": "Passed",
"Status": "Finished",
"ExecutionType": "manual",
"HasError": false,
"ExecutionStart": "2025-04-15T10:30:00Z",
"ExecutionEnd": "2025-04-15T10:31:00Z",
"ExecutedBy": "alice@example.com",
"RunId": 1,
"IsPostConditionMet": true,
"Updated": "2025-04-15T10:31:00Z"
}
}
相关内容
- 包— 打包 Playwright 项目,并在摄取时自动链接其测试用例;不要对其创建的测试用例使用
link-automation。 - project — 拥有每个测试用例的作用域。
- 测试集— 将测试用例分组到可运行的套件中。
- executions — 测试用例日志的执行级别视图。
- 报告— 运行摘要,包含失败案例和断言文本。
另请参阅
- Test Manager 概述
uip or folders list—link-automation和list-automations的--folder-key的来源。uip or packages— 如何注册 Orchestrator 包和入口点。
- 大纲
- 创建 UIP TM 测试用例
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例列表
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例列表结果历史记录
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例更新
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例删除
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例链接自动化
- 参数
- 选项
- 示例
- 数据形状
- uip tm testcases link-package
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例取消链接自动化
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例列表自动化
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例列表测试集
- 参数
- 选项
- 示例
- 数据形状
- 运行 uip tm 测试用例
- 何时使用
testcases run与testsets run - 参数
- 选项
- 示例
- 数据形状
- 端到端工作流:打包到结果
- uip tm 测试用例添加
- 参数
- 选项
- 示例
- 数据形状
- 删除 UIP TM 测试用例
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例列表步骤
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例步骤
- uip tm 测试用例步骤列表
- 获取 UIP TM 测试用例步骤
- 添加 uip tm 测试用例步骤
- uip tm 测试用例步骤更新
- uip tm 测试用例步骤移动
- uip tm 测试用例步骤删除
- uip tm 测试用例日志列表断言
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例日志启动
- 参数
- 选项
- 示例
- 数据形状
- uip tm 测试用例日志完成
- 参数
- 选项
- 示例
- 数据形状
- 相关内容
- 另请参阅