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

C# 更新Azure DevOps REST API中测试结果的生成参考,c#,azure-devops,azure-devops-rest-api,C#,Azure Devops,Azure Devops Rest Api,我有一个现有的测试结果,如果可能的话,我想更新测试结果的“Tested build”字段。我已经看过restapidoc(),我认为我正确地调用了PATCH方法,但是当返回一个200时,UI中的测试结果不会改变为“notavailable” 是否有方法更改此字段或它是只读的 PATCH https://dev.azure.com/{org}/{project}/_apis/test/Runs/{runId}/results?api-version=5.0 Auth: PAT for user

我有一个现有的测试结果,如果可能的话,我想更新测试结果的“Tested build”字段。我已经看过restapidoc(),我认为我正确地调用了PATCH方法,但是当返回一个200时,UI中的测试结果不会改变为“notavailable”

是否有方法更改此字段或它是只读的

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)

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

要解释这一点,首先需要知道响应代码定义了什么:

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

正如它所说,
200OK
只意味着您的请求URL、主体和方法都正确并且请求成功。但是,对于实际的
put/patch
操作,这取决于实际情况。因此
200OK
并不意味着操作已经完成并成功

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

是否有方法更改此字段或它是只读的

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
            }
        }
    ]
}
不,你不能用API更改它,即使是用UI。它只是只读的

您知道,在测试执行结束后,与此测试关联的构建是固定的,这是实际情况。因此,您无法更改它,它只是只读的,告诉您什么是测试的构建

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

要解释这一点,首先需要知道响应代码定义了什么:

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

正如它所说的,
200OK
只意味着您的请求URL、主体和方法都是正确的,并且请求成功。但是,对于实际的
put/patch
操作,这取决于实际情况。因此
200OK
并不意味着操作已经完成并成功

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

是否有方法更改此字段或它是只读的

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
            }
        }
    ]
}
不,您不能使用API更改它,即使使用UI。它只是只读的


您知道,在测试执行结束后,与此测试关联的构建是固定的,这是实际情况。所以,您无法更改它,它只是只读的,告诉您什么是测试版本。

我的答案现在解决了您的难题吗?请随时告诉我们最新情况:-)我的答案现在能解决您的难题吗?请随时告知我们最新状态:-)