如何在VSTS构建定义中通过已通过测试用例值设置自定义条件
如何在Azure DevOps(原VSTS)中基于已通过测试用例数设置构建任务的自定义条件?
我来帮你一步步实现这个需求——核心就是先把已通过测试用例的数量提取为管道变量,再用这个变量给后续任务加条件判断。
步骤1:提取已通过测试用例数并设置为管道变量
你需要在构建流程中添加一个PowerShell脚本任务,通过Azure DevOps的REST API获取目标测试用例集的已通过数量,然后把这个数值设为可被后续任务调用的变量。
脚本示例(适配测试运行场景)
把下面的代码放到PowerShell任务中,记得替换$testRunId为你要统计的测试运行ID(如果是测试套件,调整API端点即可):
# 从系统变量中获取组织和项目信息 $orgUrl = "$(System.TeamFoundationCollectionUri)" $projectName = "$(System.TeamProject)" # 替换为你的目标测试运行ID $testRunId = "12345" # 用系统自带的OAuth令牌做身份验证 $pat = "$(System.AccessToken)" $headers = @{ Authorization = "Bearer $pat" } # 调用API获取测试运行结果 $testRunUrl = "$orgUrl/$projectName/_apis/test/runs/$testRunId/results?api-version=7.1-preview.7" $testResults = Invoke-RestMethod -Uri $testRunUrl -Headers $headers -Method Get # 统计已通过的测试用例数量 $passedCount = ($testResults.value | Where-Object { $_.outcome -eq "Passed" }).Count # 将数值设置为管道变量,变量名是PassedTestCases Write-Host "##vso[task.setvariable variable=PassedTestCases;]$passedCount"
关键配置注意
- 确保你的代理作业勾选了允许脚本访问OAuth令牌(在代理作业的“附加选项”里找),这样脚本才能用
$(System.AccessToken)调用API。 - 如果要统计测试套件而非测试运行,把API端点换成测试套件的测试用例查询地址,比如:
然后筛选用例的$suiteUrl = "$orgUrl/$projectName/_apis/test/Plans/{planId}/Suites/{suiteId}/testcases?api-version=7.1-preview.3"latestTestResult.outcome为Passed即可。
步骤2:给后续任务设置自定义条件
找到你想要控制执行的任务,进入它的“控制选项”,在“自定义条件”里输入判断逻辑。比如你的阈值是50,条件就写:
and(succeeded(), variables['PassedTestCases'] > 50)
这个条件的意思是:当前面的任务都成功,且已通过测试用例数超过50时,才执行这个任务。
如果需要更复杂的逻辑(比如等于阈值、小于阈值),调整比较运算符即可,Azure DevOps支持>、<、>=、<=、==这些常用运算符。
内容的提问来源于stack exchange,提问作者Himalay Kondekar
相关产品推荐
相关产品推荐

