问题描述
我尝试从专门的AzureDevOps构建中获取所有测试结果。我至少需要任何测试结果中的那些信息:AutomatedTestName
,Outcome
和ErrorMessage
。
运行TestManagementHttpClient.GetTestResultDetailsForBuildAsync(this.ProjectId,this.build.Id)
返回所有测试,但是测试结果上的几乎所有属性均为空,例如AutomatedTestName
。
TestManagementHttpClient.GetTestResultDetailsForBuildAsync(this.ProjectId,this.build.Id,shouldIncludeResults: true)
也不起作用。
是否可以加载所有属性?
一种解决方法是调用TestManagementHttpClient.GetTestResultsAsync(this.ProjectId,runId)
,但结果数限制为10000。这以分页结束,直到找不到更多结果为止。如果有的话,这可能是瓶颈,并且可能会导致性能下降。 50万次测试......
解决方法
我们可以通过下面的REST API
加载所有属性GET https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/results?api-version=5.1
带有可选参数:
GET https://dev.azure.com/{organization}/{project}/_apis/test/Runs/{runId}/results?detailsToInclude={detailsToInclude}&$skip={$skip}&$top={$top}&outcomes={outcomes}&api-version=5.1
如果您有500'000个测试,我们可以使用URI参数$skip
指定要从头开始跳过的测试结果数。
更新1
一种解决方法是调用
TestManagementHttpClient.GetTestResultsAsync(this.ProjectId,runId)
,但结果数限制为10000。
我们可以致电TestManagementHttpClient.GetTestResultsAsync(this.ProjectId,runId,skip number)
来指定要从头开始跳过的测试结果数。
有关更多详细信息,请参阅此doc。