如何通过 API 将通用测试结果成功地 post 到 VSTS 构建?
How to successfully post a generic test result to a VSTS build via API?
目的是从外部测试框架向 VSTS 构建报告报告 - VSTS 构建定义中的最低要求是什么,以检查 post 测试结果到测试的能力 运行 通过 API?
目前,我有一个最小的概念验证 VSTS 构建定义,其中包含:
- VsTest 测试组件(运行s 单个 MSTest VS 测试只是为了实现 60 秒的延迟 System.Threading.Thread.Sleep(60000);)——但是,我不需要 Visual Studio测试。或者我尝试了 powershell wait 60 seconds 命令但没有成功模拟测试等待 window.
虽然上面的 VSTS 构建是 运行ning,但我正在尝试 post 通用 'test result' 与 JSON:
[
{
"testCaseTitle": "myTestCaseTitle",
"automatedTestName": "myAutomatedTestName",
"priority": 1,
"outcome": "Passed"
}
]
到当前测试 运行,地址:
https://{instance}/DefaultCollection/{project}/_apis/test/runs/{run}/results?api-version={version}
然而,在构建测试 运行 期间,运行 在 API 到 post 新测试结果上不可用,直到构建完成。一旦完成,它也无法用于 post 结果,服务器响应说明:
无法为处于已完成状态运行的测试添加或更新 TestCaseResults
那么,如果可能的话,构建定义中打开有效 window 并据以 post 通用测试结果的最低要求是多少? (您能否避免指定特定的 {运行} 数字,以当前的 运行 为目标?)
您可以先更新测试 运行 状态,然后将测试结果添加到该测试 运行。
简单的示例步骤:
- 更新测试运行.
JSON正文:
{
"state":"InProgress"
}
- 将测试结果添加到测试运行。
JSON正文:
[
{
"testCaseTitle":"TestMethod1",
"automatedTestName": "UnitTestProject1.UnitTest1.TestMethod1",
"outcome": "Passed"
}
]
关于线程休眠:
- 将 PowerShell 任务添加到构建定义
- Select 内联脚本
脚本:
Start-Sleep -s 3600
节点:如果需要等待时间较长(超过30分钟),需要使用私密代理,关于设置私密代理,可以参考:Deploy an agent on Windows
针对在 VSTS 中创建的产品构建post将外部测试框架的结果导入 VSTS 的快速回答:
定义构建产品的构建过程
Post 针对现有构建的新 'test run'(在 json 正文中指定构建 ID)
{
"name": "myTestRun",
"build":{
"id": "629"
},
"isAutomated":是的,
"state": "Waiting"
}
启动您定制的测试控制器,运行进行必要的测试
随着您的测试控制器的结果可用,post 测试结果针对之前创建的 运行,例如:
[
{
"testCaseTitle": "myTestCaseTitle",
"automatedTestName": "myAutomatedTestName",
"priority": 1,
"outcome": "Passed"
}
]
- 补丁更新测试运行设置状态为完成:
正文:
{
"name": "myTestRun",
"state": "Completed",
"comment":"All tests have been run"
}
目的是从外部测试框架向 VSTS 构建报告报告 - VSTS 构建定义中的最低要求是什么,以检查 post 测试结果到测试的能力 运行 通过 API?
目前,我有一个最小的概念验证 VSTS 构建定义,其中包含:
- VsTest 测试组件(运行s 单个 MSTest VS 测试只是为了实现 60 秒的延迟 System.Threading.Thread.Sleep(60000);)——但是,我不需要 Visual Studio测试。或者我尝试了 powershell wait 60 seconds 命令但没有成功模拟测试等待 window.
虽然上面的 VSTS 构建是 运行ning,但我正在尝试 post 通用 'test result' 与 JSON:
[
{
"testCaseTitle": "myTestCaseTitle",
"automatedTestName": "myAutomatedTestName",
"priority": 1,
"outcome": "Passed"
}
]
到当前测试 运行,地址:
https://{instance}/DefaultCollection/{project}/_apis/test/runs/{run}/results?api-version={version}
然而,在构建测试 运行 期间,运行 在 API 到 post 新测试结果上不可用,直到构建完成。一旦完成,它也无法用于 post 结果,服务器响应说明:
无法为处于已完成状态运行的测试添加或更新 TestCaseResults
那么,如果可能的话,构建定义中打开有效 window 并据以 post 通用测试结果的最低要求是多少? (您能否避免指定特定的 {运行} 数字,以当前的 运行 为目标?)
您可以先更新测试 运行 状态,然后将测试结果添加到该测试 运行。
简单的示例步骤:
- 更新测试运行.
JSON正文:
{
"state":"InProgress"
}
- 将测试结果添加到测试运行。
JSON正文:
[
{
"testCaseTitle":"TestMethod1",
"automatedTestName": "UnitTestProject1.UnitTest1.TestMethod1",
"outcome": "Passed"
}
]
关于线程休眠:
- 将 PowerShell 任务添加到构建定义
- Select 内联脚本
脚本:
Start-Sleep -s 3600
节点:如果需要等待时间较长(超过30分钟),需要使用私密代理,关于设置私密代理,可以参考:Deploy an agent on Windows
针对在 VSTS 中创建的产品构建post将外部测试框架的结果导入 VSTS 的快速回答:
定义构建产品的构建过程
Post 针对现有构建的新 'test run'(在 json 正文中指定构建 ID)
{ "name": "myTestRun", "build":{ "id": "629" }, "isAutomated":是的, "state": "Waiting" }
启动您定制的测试控制器,运行进行必要的测试
随着您的测试控制器的结果可用,post 测试结果针对之前创建的 运行,例如:
[ { "testCaseTitle": "myTestCaseTitle", "automatedTestName": "myAutomatedTestName", "priority": 1, "outcome": "Passed" } ]
- 补丁更新测试运行设置状态为完成:
正文:
{
"name": "myTestRun",
"state": "Completed",
"comment":"All tests have been run"
}