如何通过 API 将通用测试结果成功地 post 到 VSTS 构建?

How to successfully post a generic test result to a VSTS build via API?

目的是从外部测试框架向 VSTS 构建报告报告 - VSTS 构建定义中的最低要求是什么,以检查 post 测试结果到测试的能力 运行 通过 API?

目前,我有一个最小的概念验证 VSTS 构建定义,其中包含:

虽然上面的 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 通用测试结果的最低要求是多少? (您能否避免指定特定的 {运行} 数字,以当前的 运行 为目标?)

您可以先更新测试 运行 状态,然后将测试结果添加到该测试 运行。

简单的示例步骤:

  1. 更新测试运行.

JSON正文:

{
    "state":"InProgress"
}
  1. 将测试结果添加到测试运行。

JSON正文:

[
    {
        "testCaseTitle":"TestMethod1",
        "automatedTestName": "UnitTestProject1.UnitTest1.TestMethod1",
        "outcome": "Passed"
    }   
]

关于线程休眠:

  1. 将 PowerShell 任务添加到构建定义
  2. Select 内联脚本

脚本:

Start-Sleep -s 3600

节点:如果需要等待时间较长(超过30分钟),需要使用私密代理,关于设置私密代理,可以参考:Deploy an agent on Windows

针对在 VSTS 中创建的产品构建post将外部测试框架的结果导入 VSTS 的快速回答:

  1. 定义构建产品的构建过程

  2. Post 针对现有构建的新 'test run'(在 json 正文中指定构建 ID)

    { "name": "myTestRun", "build":{ "id": "629" }, "isAutomated":是的, "state": "Waiting" }

  3. 启动您定制的测试控制器,运行进行必要的测试

  4. 随着您的测试控制器的结果可用,post 测试结果针对之前创建的 运行,例如:

    [ { "testCaseTitle": "myTestCaseTitle", "automatedTestName": "myAutomatedTestName", "priority": 1, "outcome": "Passed" } ]

    1. 补丁更新测试运行设置状态为完成:

正文:

{
"name": "myTestRun",
"state": "Completed",
"comment":"All tests have been run"

}