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

PowerShell Pester:实现内外数据测试及解决摘要拆分、配置传递问题

Pester测试问题解决:统一摘要、配置传递与容器优化

问题1:测试摘要拆分

嵌套调用Invoke-Pester会导致每个容器生成独立的测试摘要,无法合并统计。核心解决思路是避免嵌套调用Pester,将所有测试资源(普通测试文件+数据驱动容器)统一在顶层Invoke-Pester中执行。

调整方案

直接在顶层运行时,同时指定普通测试文件和数据容器:

# 顶层执行脚本/控制台命令
$values = 'value', 'not value'
$containers = $values | ForEach-Object {
    New-PesterContainer -Path "$PSScriptRoot/ExternalData.ps1" -Data @{ Param = $_ }
}

# 同时加载普通测试文件和数据驱动容器
Invoke-Pester -Path "$PSScriptRoot/NonDataExternal.Tests.ps1" -Container $containers

执行后,所有测试结果会合并为一个统一摘要,输出符合你期望的格式:

Tests Passed: 2, Failed: 1, Skipped: 0 NotRun: 0

问题2:配置传递

如果因特殊需求必须保留嵌套调用,可将顶层的PesterConfiguration对象传递给内部Invoke-Pester:

# Invoke-ExternalData.Tests.ps1 调整后代码
$config = Get-PesterConfiguration
# 根据需求修改配置项,例如调整输出详细程度
$config.Output.Verbosity = 'Detailed'

$values = 'value', 'not value'
$containers = $values | ForEach-Object {
    New-PesterContainer -Path "$PSScriptRoot/ExternalData.ps1" -Data @{ Param = $_ }
}

Invoke-Pester -Container $containers -Configuration $config

更优方案是在顶层统一配置,无需嵌套调用:顶层Invoke-Pester的配置会自动应用到所有测试文件和容器,从根源避免配置传递的麻烦。

PesterContainer最优用法

完全不需要通过嵌套调用Invoke-Pester传递容器。直接在顶层Invoke-Pester中同时指定:

  • -Path:普通测试文件(如NonDataExternal.Tests.ps1)
  • -Container:数据驱动的容器集合
    所有测试会在同一个Pester会话中执行,自动合并结果、共享配置,彻底解决摘要拆分和配置传递问题。

内容的提问来源于stack exchange,提问作者Yorai Levi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:26:10