无法通过API将测试运行状态更新为已完成

时间:2019-10-16 09:30:58

标签: api testing curl azure-devops

我们一直在使用curl和VSTS / Azure API v5.1来创建测试运行,发布测试结果并将测试运行设置为“已完成”状态已有一段时间。

在过去的几周中,我们未提交将测试运行状态从“ inProgress”修补为“已完成”的请求。

(但是我们可以使用相同的请求来更新其他testrun属性,例如'comment'的值)

文档中仍然提到可以提供状态的可接受值:

https://docs.microsoft.com/en-us/rest/api/azure/devops/test/runs/update?view=azure-devops-rest-5.1#updating-started-date

您是否可以通过API完成测试运行?谢谢

curl -k -H "Content-Type: application/json" -H "Authorization: Basic {token}" --request PATCH -d "{'state':'Completed','build':{'id': 0},'comment':'an updated comment'}" https://dev.azure.com/etc/etc/_apis/test/runs/{testrunID}?api-version=5.1

3 个答案:

答案 0 :(得分:1)

我在azure devops的PowerShell任务中使用以下脚本进行了测试,并且可以成功地将testrun的任何状态修改为Completed。

$connectionToken="your token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))

curl.exe  -k -H "Content-Type: application/json" -H "Authorization: Basic $base64AuthInfo" --request PATCH -d "{'state':'Completed','comment':'an updated comment'}" https://dev.azure.com/{org}/{pro}/_apis/test/runs/{runId}?api-version=5.1

答案 1 :(得分:0)

我可以通过REST API成功将状态更新为Completed

PATCH https://dev.azure.com/{organizaion}/{project}/_apis/test/runs/{runid}?api-version=5.1

Request Body:
{
  "state": "Completed"
}

但是它仅更新了测试运行状态,如果结果不是Passed,则在Completed状态附近会出现一个三角形的感叹号。 因此,要完全更新状态,我们必须将测试结果outcome更新为Passed

PATCH https://dev.azure.com/{organization}/{project}/_apis/test/runs/{runid}/Results?api-version=5.1

Request body:
[
  {
    "id": 100000,
    "outcome": "Passed"
  }
]

enter image description here

答案 2 :(得分:0)

谢谢大家的帮助。我可以确认我们在CMD中运行的curl命令现在已成功将testrun状态设置为“ completed”。如前所述,它能够更改测试运行记录的其他方面(例如,评论),但最近几周并未影响状态。现在状态也在更新。这将向我表明问题可能不属于我们,因为我们的curl API请求没有更改。很高兴看到它已解决。