UiPath Documentation
test-manager
latest
false
Wichtig :
Es kann 1–2 Wochen dauern, bis die Lokalisierung neu veröffentlichter Inhalte verfügbar ist.

Test Manager-Benutzerhandbuch

Spezifikation des TMH-Dateiformats

Eine .tmh -Datei ist das von UiPath Test Manager verwendete Projektsicherungs-/Migrationsformat. In diesem Dokument werden die Struktur, der Inhalt und die Codierungsanforderungen im Detail beschrieben.

Archivstruktur

<package-name>.tmh               ← ZIP archive
├── manifest.json                ← Package metadata and object counts
└── objects/
    ├── requirements/
    │   └── requirements-{n}.json
    ├── testcases/
    │   └── testcases-{n}.json
    ├── teststeps/
    │   └── teststeps-{n}.json
    ├── testsets/
    │   └── testsets-{n}.json
    ├── testsettestcaseassignments/
    │   └── testsettestcaseassignments-{n}.json
    ├── requirementtestcaseassignments/
    │   └── requirementtestcaseassignments-{n}.json
    ├── objectlabels/
    │   ├── objectlabels-testcase-{n}.json
    │   ├── objectlabels-testset-{n}.json
    │   ├── objectlabels-requirement-{n}.json
    │   ├── objectlabels-testexecution-{n}.json
    │   └── objectlabels-testcaselog-{n}.json
    ├── customfieldvalues/
    │   ├── customfieldvalues-testcase-{n}.json
    │   └── customfieldvalues-requirement-{n}.json
    ├── customfieldlabels/
    │   └── customfieldlabels-{n}.json
    ├── customfielddefinitions/
    │   └── customfielddefinitions-{n}.json
    ├── attachments/
    │   ├── attachments-testexecution-{n}.json
    │   ├── attachments-requirement-{n}.json
    │   ├── attachments-testcaselog-{n}.json
    │   ├── attachments-teststeplog-{n}.json
    │   └── attachments-project-{n}.json
    ├── testexecutions/
    │   ├── testexecutions-Manual-Finished-{n}.json
    │   ├── testexecutions-Automated-Finished-{n}.json
    │   └── testexecutions-Mixed-Finished-{n}.json
    ├── testcaselogs/
    │   └── testcaselogs-{n}.json
    ├── teststeplogs/
    │   └── teststeplogs-{n}.json
    ├── testcaselog-assertions/
    │   └── testcaselogassertions-{n}.json
    ├── testcaselogresultoverrides/
    │   └── testcaselogresultoverrides-{n}.json
    ├── assertion-attachments/
    │   └── assertion-attachments-{n}.json
    ├── defects/
    │   └── defects-{n}.json
    ├── parameters/
    │   └── parameters-{n}.json
    ├── testsetpackages/
    │   └── testsetpackages-{n}.json
    ├── testsettestcaseparameters/
    │   └── testsettestcaseparameters-{n}.json
    ├── testsetschedules/
    │   └── testsetschedules-testset-{n}.json
    ├── objectfilters/
    │   └── objectfilters-testset-{n}.json
    ├── projectauthorization/
    │   └── projectauthorization-{n}.json
    ├── projectsettings/
    │   └── projectsettings.json         ← singular, no number suffix
    └── prompts/
        └── prompts-{n}.json
<package-name>.tmh               ← ZIP archive
├── manifest.json                ← Package metadata and object counts
└── objects/
    ├── requirements/
    │   └── requirements-{n}.json
    ├── testcases/
    │   └── testcases-{n}.json
    ├── teststeps/
    │   └── teststeps-{n}.json
    ├── testsets/
    │   └── testsets-{n}.json
    ├── testsettestcaseassignments/
    │   └── testsettestcaseassignments-{n}.json
    ├── requirementtestcaseassignments/
    │   └── requirementtestcaseassignments-{n}.json
    ├── objectlabels/
    │   ├── objectlabels-testcase-{n}.json
    │   ├── objectlabels-testset-{n}.json
    │   ├── objectlabels-requirement-{n}.json
    │   ├── objectlabels-testexecution-{n}.json
    │   └── objectlabels-testcaselog-{n}.json
    ├── customfieldvalues/
    │   ├── customfieldvalues-testcase-{n}.json
    │   └── customfieldvalues-requirement-{n}.json
    ├── customfieldlabels/
    │   └── customfieldlabels-{n}.json
    ├── customfielddefinitions/
    │   └── customfielddefinitions-{n}.json
    ├── attachments/
    │   ├── attachments-testexecution-{n}.json
    │   ├── attachments-requirement-{n}.json
    │   ├── attachments-testcaselog-{n}.json
    │   ├── attachments-teststeplog-{n}.json
    │   └── attachments-project-{n}.json
    ├── testexecutions/
    │   ├── testexecutions-Manual-Finished-{n}.json
    │   ├── testexecutions-Automated-Finished-{n}.json
    │   └── testexecutions-Mixed-Finished-{n}.json
    ├── testcaselogs/
    │   └── testcaselogs-{n}.json
    ├── teststeplogs/
    │   └── teststeplogs-{n}.json
    ├── testcaselog-assertions/
    │   └── testcaselogassertions-{n}.json
    ├── testcaselogresultoverrides/
    │   └── testcaselogresultoverrides-{n}.json
    ├── assertion-attachments/
    │   └── assertion-attachments-{n}.json
    ├── defects/
    │   └── defects-{n}.json
    ├── parameters/
    │   └── parameters-{n}.json
    ├── testsetpackages/
    │   └── testsetpackages-{n}.json
    ├── testsettestcaseparameters/
    │   └── testsettestcaseparameters-{n}.json
    ├── testsetschedules/
    │   └── testsetschedules-testset-{n}.json
    ├── objectfilters/
    │   └── objectfilters-testset-{n}.json
    ├── projectauthorization/
    │   └── projectauthorization-{n}.json
    ├── projectsettings/
    │   └── projectsettings.json         ← singular, no number suffix
    └── prompts/
        └── prompts-{n}.json
Hinweis:

Nur Objekttypen, die tatsächlich exportiert wurden, sind vorhanden. Fehlende Ordner/Dateien werden während des Imports im Hintergrund übersprungen.

Dateibenennungskonventionen

Die meisten Objekttypen – nummerierte Teile

Dateien haben den Namen <type>-{n}.json wobei {n} für echte Exporte, die vom System erstellt wurden, mit 0 beginnen. Zum Beispiel:

requirementtestcaseassignments-0.json
testcases-0.json
teststeps-0.json
requirementtestcaseassignments-0.json
testcases-0.json
teststeps-0.json

Der Importer scannt alle Dateien in jedem Ordner, sodass sowohl 0-basierte als auch 1-basierte Nummerierung beim manuellen Erstellen von Dateien funktioniert.

Große Exporte können auf mehrere Dateien aufgeteilt werden (testcases-0.json, testcases-1.json usw.) – der Importer liest alle Dateien im Ordner.

Tipp:

Für eine optimale Leistung sollten Sie jede Datei auf maximal 500 Objekte beschränken.

Dateinamen mit Typ-Scope

Mehrere Objekttypen schränken ihre Dateien auf den Objekttyp ein, zu dem sie gehören. Der Importer liest alle Dateien im Ordner unabhängig vom Kennzeichner, aber echte Exporte verwenden immer diese Namen:

ObjekttypMuster des Dateinamens
ObjectLabelsobjectlabels-testcase-{n}.json, objectlabels-testset-{n}.json, objectlabels-requirement-{n}.json, …
CustomFieldValuescustomfieldvalues-testcase-{n}.json, customfieldvalues-requirement-{n}.json
Anhänge (Attachments)attachments-testexecution-{n}.json, attachments-requirement-{n}.json, …
Testausführungentestexecutions-Manual-Finished-{n}.json, testexecutions-Automated-Finished-{n}.json, …
Objektfilterobjectfilters-testset-{n}.json
Zeitpläne der Testsätzetestsetschedules-testset-{n}.json

Projekteinstellungen – kein Zahlensuffix

projectsettings/projectsettings.json
projectsettings/projectsettings.json

Diese Datei ist immer einzeln (keine Blocknummer).

Codierungsanforderungen

Alle JSON-Dateien müssen als UTF-8 ohne BOM codiert sein.

Warnung:

Das Set-Content -Encoding utf8 von PowerShell 5.1 schreibt ein UTF-8-BOM (EF BB BF). Dies bewirkt, dass JSON.parse im Browser SyntaxError: Unexpected token an Position 0 auslöst. Verwenden Sie immer [System.IO.File]::WriteAllText($path, $content, (New-Object System.Text.UTF8Encoding($false))) beim Erstellen von .tmh -Dateien aus PowerShell.

Schemaversionierung

manifest.json hat ein schemaVersion -Feld (z. B. "1.0.16"). Der Importer verwendet diese Version zusammen mit [IntroducedIn] -Attributen für jede DTO-Eigenschaft, um zu bestimmen, welche Felder gelesen werden sollen. Felder, die in einer neueren Version als der Schemaversion des Pakets eingeführt wurden, werden während der Deserialisierung ignoriert.

Aktuelle Version: 1.0.16

Zusammenfassung des Versionsverlaufs:

VersionBemerkenswerte Ergänzungen
1.0.0Anfang: Anforderungen, Testfälle, Testschritte, Testsätze, Zuweisungen, Beschriftungen, Anhänge, Fehler, benutzerdefinierte Feldwerte
1.0.1preCondition für Testfälle
1.0.2Testausführungen, Überschreibungen von Testfallprotokollergebnissen, Assertionen
1.0.4Teilmengenexport (isSubsetExport, exportSubsetDetails)
1.0.5Benutzerdefinierte Feldbeschriftungen
1.0.7Benutzerdefinierte Prompts
1.0.9postCondition für Testfälle
1.0.10Parameter
1.0.11Testsatzpakete, folderKey/folderName für Testsätze, packageEntryPointUniqueId usw. für Testfälle
1.0.13id an Anhängen
1.0.14studioWebFileId/studioWebProjectId für Testfälle; id für Testsatz-/Testfallzuweisungen
1.0.15assigneeEmail bei Testsatz-/Testfallzuweisungen
1.0.16Projektkonfiguration (Einstellungen, Governance, Unterzeichner), benutzerdefinierte Felddefinitionen, Projektautorisierungen

Manifest.json

Befindet sich am Stammverzeichnis des Archivs (nicht in objects/).

{
  "objectCountDetails": {
    "testCases": 5,
    "testSets": 2,
    "requirements": 3,
    "objectLabels": 0,
    "attachments": 0,
    "testExecutions": 0,
    "testCaseLogs": 0,
    "testCaseResultOverrides": 0,
    "testSteps": 12,
    "testStepLogs": 0,
    "testSetTestCaseAssignments": 6,
    "requirementTestCaseAssignments": 4,
    "defects": 0,
    "customFieldValues": 0,
    "customFieldLabels": 0,
    "assertions": 0,
    "assertionScreenshots": 0,
    "testSetLabelFilters": 0,
    "userDefinedPrompts": 0,
    "parameters": 0,
    "testSetPackages": 0,
    "testSetTestCaseParameters": 0,
    "customFieldDefinitions": 0,
    "projectAuthorizations": 0
  },
  "project": {
    "name": "My Project",
    "description": "Project description",
    "projectPrefix": "MP"
  },
  "tmPackageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "schemaVersion": "1.0.16"
}
{
  "objectCountDetails": {
    "testCases": 5,
    "testSets": 2,
    "requirements": 3,
    "objectLabels": 0,
    "attachments": 0,
    "testExecutions": 0,
    "testCaseLogs": 0,
    "testCaseResultOverrides": 0,
    "testSteps": 12,
    "testStepLogs": 0,
    "testSetTestCaseAssignments": 6,
    "requirementTestCaseAssignments": 4,
    "defects": 0,
    "customFieldValues": 0,
    "customFieldLabels": 0,
    "assertions": 0,
    "assertionScreenshots": 0,
    "testSetLabelFilters": 0,
    "userDefinedPrompts": 0,
    "parameters": 0,
    "testSetPackages": 0,
    "testSetTestCaseParameters": 0,
    "customFieldDefinitions": 0,
    "projectAuthorizations": 0
  },
  "project": {
    "name": "My Project",
    "description": "Project description",
    "projectPrefix": "MP"
  },
  "tmPackageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "schemaVersion": "1.0.16"
}
Hinweis:

Echte Exporte enthalten auch ein packageName -Feld (den vorgeschlagenen Download-Dateinamen). Der Importer ignoriert es – lassen Sie es in manuell erstellten Dateien weg.

objects/ – JSON-Dateischemas

Jede Objektdatei verwendet ein Wrapper-Objekt , dessen einzige Eigenschaft ein JSON-Array ist. Das Array enthält die einzelnen Objektdatensätze.

requirements/{n}.json

{
  "requirements": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "User can log in",
      "description": "The login form must accept valid credentials.",
      "foreignRef": "",
      "connectorRequirementId": "00000000-0000-0000-0000-000000000000"
    }
  ]
}
{
  "requirements": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "name": "User can log in",
      "description": "The login form must accept valid credentials.",
      "foreignRef": "",
      "connectorRequirementId": "00000000-0000-0000-0000-000000000000"
    }
  ]
}
FeldTypHinweise
idGUID-ZeichenfolgeEindeutiger Bezeichner pro Anforderung
namestringErforderlich; Max. 255 Zeichen
descriptionstringKann eine leere Zeichenfolge sein
foreignRefstringExternes System-Referenz; kann leer sein
connectorRequirementIdGUID-ZeichenfolgeVerwenden Sie "00000000-0000-0000-0000-000000000000" wenn keine Verknüpfung mit einem Connector besteht

testcases/{n}.json

{
  "testCases": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440001",
      "version": null,
      "name": "Verify login with valid credentials",
      "inputParams": null,
      "description": "",
      "automationId": null,
      "automationTestCaseName": null,
      "automationProjectName": null,
      "foreignRef": "",
      "connectorTestCaseId": null,
      "preCondition": null,
      "postCondition": null,
      "packageEntryPointUniqueId": null,
      "packageIdentifier": null,
      "packageEntryPointName": null,
      "feedId": null,
      "packageSourceName": null,
      "studioWebFileId": null,
      "studioWebProjectId": null
    }
  ]
}
{
  "testCases": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440001",
      "version": null,
      "name": "Verify login with valid credentials",
      "inputParams": null,
      "description": "",
      "automationId": null,
      "automationTestCaseName": null,
      "automationProjectName": null,
      "foreignRef": "",
      "connectorTestCaseId": null,
      "preCondition": null,
      "postCondition": null,
      "packageEntryPointUniqueId": null,
      "packageIdentifier": null,
      "packageEntryPointName": null,
      "feedId": null,
      "packageSourceName": null,
      "studioWebFileId": null,
      "studioWebProjectId": null
    }
  ]
}
FeldTypHinweise
idGUID-ZeichenfolgeEindeutig pro Testfall
versionZeichenfolge | nullnull Für manuelle Testfälle; "1.0.0" für automatisierte Testfälle, die mit einer Paketversion verknüpft sind; "" für automatisierte Testfälle ohne feste Version
namestringErforderlich; Max. 255 Zeichen
inputParamsZeichenfolge | nullJSON-codierte Eingabeparameter; null für manuell
descriptionstringRich-Text-Beschreibung; "" wenn fehlt
automationIdZeichenfolge | nullUiPath-Automatisierungsbezeichner; null für manuell
automationTestCaseNameZeichenfolge | nullAnzeigename der Automatisierung; null für manuell
automationProjectNameZeichenfolge | nullAutomatisierungsprojekt; null für manuell
foreignRefstringExternes System-Referenz; "" wenn fehlt
connectorTestCaseIdZeichenfolge | nullConnector-System-ID; null wenn fehlt
preConditionZeichenfolge | null (v1.0.1+)Vorbedingungstext; null wenn fehlend; Max. 8.000 Zeichen
postConditionZeichenfolge | null (v1.0.9+)Text nach Bedingung; null wenn fehlend; Max. 8.000 Zeichen
packageEntryPointUniqueIdZeichenfolge | null (v1.0.11+)GUID des Paketeinstiegspunkts; null für manuell
packageIdentifierZeichenfolge | null (v1.0.11+)Paket-ID; null für manuell
packageEntryPointNameZeichenfolge | null (v1.0.11+)Name des Einstiegspunkts; null für manuell
feedIdZeichenfolge | null (v1.0.11+)Paketfeed-ID; null für manuell
packageSourceNameZeichenfolge | null (v1.0.11+)Name der Paketquelle; null für manuell
studioWebFileIdZeichenfolge | null (v1.0.14+)Studio Web-Datei-ID; null für manuell
studioWebProjectIdZeichenfolge | null (v1.0.14+)Studio Web-Projekt-ID; null für manuell

teststeps/{n}.json

{
  "testSteps": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440010",
      "testCaseId": "550e8400-e29b-41d4-a716-446655440001",
      "orderNo": 0,
      "actionType": null,
      "description": "Navigate to the login page",
      "expectedResult": "Login page is displayed",
      "clipboardData": ""
    }
  ]
}
{
  "testSteps": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440010",
      "testCaseId": "550e8400-e29b-41d4-a716-446655440001",
      "orderNo": 0,
      "actionType": null,
      "description": "Navigate to the login page",
      "expectedResult": "Login page is displayed",
      "clipboardData": ""
    }
  ]
}
FeldTypHinweise
idGUID-ZeichenfolgeEindeutig pro Schritt
testCaseIdGUID-ZeichenfolgeMuss auf einen vorhandenen Testfall verweisen id
orderNoInteger0-basierte Anzeigereihenfolge (erster Schritt = 0)
actionTypeZeichenfolge | nullnull für manuelle Schritte
descriptionstringSchritt-Aktionstext
expectedResultstringErwartetes Ergebnis; "" wenn fehlt
clipboardDatastringZwischenablage-/Screenshotdaten; max. 8.000 Zeichen; in der Regel ""

testsets/{n}.json

{
  "testSets": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440020",
      "version": null,
      "name": "Regression Suite",
      "description": "",
      "source": "TestManager",
      "externalTestSetId": null,
      "sourceDetails": null,
      "folderKey": null,
      "folderName": ""
    }
  ]
}
{
  "testSets": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440020",
      "version": null,
      "name": "Regression Suite",
      "description": "",
      "source": "TestManager",
      "externalTestSetId": null,
      "sourceDetails": null,
      "folderKey": null,
      "folderName": ""
    }
  ]
}
FeldTypHinweise
idGUID-ZeichenfolgeEindeutig pro Testsatz
versionZeichenfolge | nullnull für vom Test Manager verwaltete Testsätze
namestringErforderlich; Max. 255 Zeichen
descriptionstring"" wenn sie fehlt
sourcestring"TestManager" (Standard) oder "Orchestrator"das ist ein String, kein Integer
externalTestSetIdZeichenfolge | nullExterne ID, wenn source "Orchestrator" ist; null andernfalls
sourceDetailsZeichenfolge | nullZusätzliche Quellmetadaten; null wenn fehlt
folderKeyZeichenfolge | null (v1.0.11+)UiPath Orchestrator-Ordnerschlüssel; null wenn nicht verknüpft
folderNamestring (v1.0.11+)Anzeigename des Ordners; "" wenn nicht verknüpft; nicht in DB gespeichert, nur informativ

testsetcaseassignments/{n}.json

{
  "testSetTestCaseAssignments": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440030",
      "testSetId": "550e8400-e29b-41d4-a716-446655440020",
      "testCaseId": "550e8400-e29b-41d4-a716-446655440001",
      "assigneeEmail": null
    }
  ]
}
{
  "testSetTestCaseAssignments": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440030",
      "testSetId": "550e8400-e29b-41d4-a716-446655440020",
      "testCaseId": "550e8400-e29b-41d4-a716-446655440001",
      "assigneeEmail": null
    }
  ]
}
FeldTypHinweise
idGUID-Zeichenfolge (v1.0.14+)Zuweisungsbezeichner
testSetIdGUID-ZeichenfolgeVerweist auf einen Testsatz id
testCaseIdGUID-ZeichenfolgeVerweist auf einen Testfall id
assigneeEmailZeichenfolge | null (v1.0.15+)E-Mail-Adresse des Beauftragten; null wenn nicht zugewiesen

requirementstestcaseassignments/{n}.json

{
  "requirementTestCaseAssignments": [
    {
      "requirementId": "550e8400-e29b-41d4-a716-446655440000",
      "testCaseId": "550e8400-e29b-41d4-a716-446655440001"
    }
  ]
}
{
  "requirementTestCaseAssignments": [
    {
      "requirementId": "550e8400-e29b-41d4-a716-446655440000",
      "testCaseId": "550e8400-e29b-41d4-a716-446655440001"
    }
  ]
}
Warnung:

Kein id Feld. Im Gegensatz zu den meisten anderen Objekttypen haben Anforderungstestfallzuweisungen nur requirementId und testCaseId.

objectlabels/objectlabels-{objecttype}-{n}.json

Hinweis:

Dateibenennung: Echte Exporte verwenden einen typqualifizierten Namen wie objectlabels-testcase-1.json, objectlabels-testset-1.json, objectlabels-requirement-1.json usw. Der Importer liest alle Dateien im Ordner objectlabels/ , sodass der Kennzeichner beim manuellen Erstellen von Dateien nicht unbedingt erforderlich ist, aber es wird empfohlen, die Konvention zu befolgen.

{
  "objectLabels": [
    {
      "objectId": "550e8400-e29b-41d4-a716-446655440001",
      "name": "regression",
      "description": "",
      "labelType": 0,
      "objectType": "TestCase"
    }
  ]
}
{
  "objectLabels": [
    {
      "objectId": "550e8400-e29b-41d4-a716-446655440001",
      "name": "regression",
      "description": "",
      "labelType": 0,
      "objectType": "TestCase"
    }
  ]
}
FeldTypHinweise
objectIdGUID-ZeichenfolgeID des beschrifteten Objekts
namestringBeschriftungstext
descriptionstringBeschriftungsbeschreibung; "" wenn fehlt
labelTypeInteger1 = Systembezeichnung (z. B "manual", "automated"); 0 = Benutzerdefinierte Beschriftung
objectTypestring"TestCase", "TestSet", "Requirement", "TestExecution", "TestCaseLog"

benutzerdefiniertefeldwerte/{n}.json

{
  "customFieldValues": [
    {
      "objectId": "550e8400-e29b-41d4-a716-446655440001",
      "objectType": "TestCase",
      "fieldName": "Priority",
      "fieldValue": "High"
    }
  ]
}
{
  "customFieldValues": [
    {
      "objectId": "550e8400-e29b-41d4-a716-446655440001",
      "objectType": "TestCase",
      "fieldName": "Priority",
      "fieldValue": "High"
    }
  ]
}

projectsettings/projectsettings.json

Eingeführt in Schemaversion 1.0.16. Nur vorhanden, wenn „Projektkonfiguration exportieren“ aktiviert ist.

{
  "projectTimeZone": "Europe/Vienna",
  "folderKey": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "governanceEnabled": true,
  "governedByDefault": false,
  "signatories": [
    {
      "signatoryId": "550e8400-e29b-41d4-a716-446655440099",
      "signatoryType": 0,
      "signatoryLastKnownDetails": "john.doe@company.com"
    }
  ]
}
{
  "projectTimeZone": "Europe/Vienna",
  "folderKey": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "governanceEnabled": true,
  "governedByDefault": false,
  "signatories": [
    {
      "signatoryId": "550e8400-e29b-41d4-a716-446655440099",
      "signatoryType": 0,
      "signatoryLastKnownDetails": "john.doe@company.com"
    }
  ]
}
Hinweis:

Im Gegensatz zu allen anderen Objektdateien ist projectsettings.json ein direktes Objekt (kein Wrapper-Array). Die Datei enthält ein einzelnes flaches JSON-Objekt.

FeldTypHinweise
projectTimeZoneZeichenfolge | nullIANA-Zeitzonenzeichenfolge (z. B. "Europe/Vienna")
folderKeyGUID | nullVerknüpfter Orchestrator-Ordner
governanceEnabledBoolescher Wert | nullOb Governance für das Projekt aktiviert ist
governedByDefaultBoolescher Wert | nullOb neue Testfälle standardmäßig geregelt werden
signatories-Array | nullListe der Genehmiger/Unterzeichner
signatories[].signatoryIdGUIDBenutzer- oder Gruppen-ID
signatories[].signatoryTypeInteger0 = Benutzer, 1 = Benutzergruppe
signatories[].signatoryLastKnownDetailsstringAnzeigename oder E-Mail-Adresse zum Zeitpunkt des Exports
Hinweis:

lastDisabledAt (der Zeitstempel für die Governance-Deaktivierung) wird absichtlich vom Export ausgeschlossen – es handelt sich um einen internen Zeitstempel, der für ein erneut importiertes Projekt nicht aussagekräftig ist.

Regeln und Beschränkungen

  1. Alle IDs müssen eindeutige, gültige GUIDs sein. Verwenden Sie IDs nicht für Objekte desselben oder eines unterschiedlichen Typs wieder.

  2. Querverweise müssen aufgelöst werden. Ein testCaseId in einem Testschritt oder einer Zuweisung muss auf einen Testfall id verweisen, der im selben Paket vorhanden ist.

  3. Wrapper-Objekte sind erforderlich. Auch wenn die Sammlung ein Element hat, muss es dennoch umbrochen werden: { "testCases": [ {...} ] }, niemals ein leeres Array oder Objekt.

  4. null vs "" Konventionen: Verwenden Sie null für optionale Felder, die wirklich fehlen (z. B automationId -, inputParams -, preCondition -, connectorTestCaseId, alle package* -Felder in manuellen Testfällen). Verwenden Sie "" nur für Felder, die immer als Zeichenfolgen vorhanden sind, aber zufällig leer sind (z. B foreignRef, description, clipboardData). Eine Verwechslung – insbesondere die Verwendung von "" , wo null erwartet wird – kann zu Importfehlern im Hintergrund führen.

  5. objectCountDetails im Manifest muss mit der tatsächlichen Anzahl der vorhandenen Objekte übereinstimmen , aber der Importer validiert die Anzahl nicht streng – Abweichungen wirken sich nur auf die Anzeige der Zusammenfassung vor dem Import aus.

  6. UTF-8 ohne BOM ist für alle Dateien obligatorisch.

Minimale gültige TMH-Datei (handschriftlich)

Die kleinste gültige .tmh -Datei, die der Test Manager akzeptiert, enthält nur manifest.json:

{
  "objectCountDetails": { ... },
  "project": { "name": "Test Project", "description": "", "projectPrefix": "TP" },
  "tmPackageId": "<new-guid>",
  "schemaVersion": "1.0.16"
}
{
  "objectCountDetails": { ... },
  "project": { "name": "Test Project", "description": "", "projectPrefix": "TP" },
  "tmPackageId": "<new-guid>",
  "schemaVersion": "1.0.16"
}

Alle Unterverzeichnisse objects/ sind optional. Der Importer überspringt geräuschlos jeden Objekttyp, der nicht im Archiv vorhanden ist.

War diese Seite hilfreich?

Verbinden

Benötigen Sie Hilfe? Support

Möchten Sie lernen? UiPath Academy

Haben Sie Fragen? UiPath-Forum

Auf dem neuesten Stand bleiben