更新Azure DevOps REST API中测试结果的生成参考

时间:2019-06-13 17:57:34

标签: c# azure-devops azure-devops-rest-api

我有一个现有的测试结果,如果可能的话,我想为测试结果更新“ Tested build”字段。我查看了REST API文档(https://docs.microsoft.com/en-us/rest/api/azure/devops/test/results/update?view=azure-devops-rest-5.0),并认为我已经正确调用了PATCH方法,但是返回200时,UI中的测试结果不会更改为“ not available”。

是否可以更改此字段,或者它是只读的?

PATCH https://dev.azure.com/{org}/{project}/_apis/test/Runs/{runId}/results?api-version=5.0

Auth: PAT for user who has Test Plans license

JSON request body: 
[
    {
        "id": "100000",
        "build": {
            "id": "206",
            "name": {buildDefinitonName},
            "url": "https://dev.azure.com/{org}/{projectguid}/_apis/build/Builds/206"
        }
    }
]

JSON response body: 
{
    "count": 1,
    "value": [
        {
            "id": 100000,
            "project": {},
            "lastUpdatedDate": "2019-06-13T17:18:56.073Z",
            "priority": 0,
            "url": "",
            "lastUpdatedBy": {
                "displayName": null,
                "id": null
            }
        }
    ]
}

我也尝试使用.NET SDK,但没有运气:

...
var build = await buildClient.GetBuildAsync(projectGuid, 206);

var testResult = await testClient.GetTestResultByIdAsync(projectGuid, {runId}, 100000);

testResult.Build = new Microsoft.TeamFoundation.TestManagement.WebApi.ShallowReference
     {
         Id = build.Id.ToString(),
         Name = build.Definition.Name,
         Url = build.Url
     };

TestCaseResult[] results = new TestCaseResult[] { testResult };

var outcome = await testClient.UpdateTestResultsAsync(results, teamProject, {runId});

(结果显示Build = null)

1 个答案:

答案 0 :(得分:0)

  

正确调用了PATCH方法,但返回200时,   用户界面中的测试结果不会更改为“不可用”。

要对此进行解释,首先需要知道响应代码200OK定义了什么:

”它代表成功的HTTP请求的标准响应。实际响应将取决于所使用的请求方法。

200OK表示您的请求URL,正文和方法均正确无误,并且请求成功。但是,对于实际的put/patch动作,它取决于实际情况。因此,200OK并不意味着该操作已完成且成功。

enter image description here

因此,对于Azure Devops中测试结果的“ Tested build”字段,

  

是否可以更改此字段,或者它是只读的?

否,即使使用UI,也无法使用API​​进行更改。它只是只读的。

您知道,在测试执行结束之后,与此测试关联的内部版本是固定的,这就是实际情况。因此,您无法更改它,它只能读来告诉您经过测试的版本。