You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:59:15