我想知道如何将我的测试重新运行结果链接到原始测试结果。我的自动化测试管道如下所示:
我想将重新运行测试结果添加到原始测试运行结果中,以便我可以使用“PassedOnRerun”切换来过滤管道上的测试。此外,如果测试在原始测试和重新运行中都失败了,那么如果能够在原始测试运行中同时存在两个失败原因,那就太好了。
我无法找到如何使用 devops REST API 使用子结果更新测试结果的可靠示例。
同样的问题已经在 2020 年的 MS 开发者社区上发布了here。该问题得到的支持太少,因此没有技术答案。
截至 2022 年 5 月,我可以确认:
我也做了这些观察:
所有这些观察结果都清楚地表明这样的结论:“重新运行时传递”报告只是 VSTest 任务的一个功能,并且不能由其他任务重现。您是否尝试过使用带有选项“rerunFailedTests: True”的 VSTest 任务?
为了获得重新运行时通过的测试的一些报告,我使用以下管道:
如果有人仍在寻找答案:
我能够使用 Azure Devops REST API 来实现此目的。它在这里记录,没有适当的解释:https://learn.microsoft.com/en-us/rest/api/azure/devops/test/results/update?view=azure-devops-rest-7.2&tabs=HTTP #自定义测试字段
这是一个粗略的示例,可以帮助您使用客户端 API:
// use VssConnection
var testClient = _connection.GetClient<TestManagementHttpClient>();
var testResultId = 123;
await testClient.UpdateTestResultsAsync(
[new TestCaseResult
{
Id = testResultId,
Outcome = TestOutcome.Passed.ToString(), // assuming the test passed in the final attempt
// other fields omitted for brevity
ResultGroupType = ResultGroupType.Rerun, // ADO will show this as the parent node containing each attempt
SubResults = new List<TestSubResult>
{
// each attempt is a subresult
new TestSubResult
{
ParentId = testResultId,
// other fields omitted for brevity,
CustomFields = new List<CustomTestField> { new CustomTestField { FieldName = "AttemptId", Value = 1 } }
}
},
CustomFields = new List<CustomTestField> {
new CustomTestField { FieldName = "AttemptId", Value = 3 },
new CustomTestField { FieldName = "IsTestResultFlaky", Value = true
}
}
}],
project: _teamProject,
runId: 456, // the test run id
cancellationToken: CancellationToken.None
);