首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“`pester`”测试“`pester`”版本

使用“`pester`”测试“`pester`”版本
EN

Stack Overflow用户
提问于 2019-08-30 21:17:40
回答 2查看 5.3K关注 0票数 2

我有一组pester测试,用于使用v4.0+ should操作符-FileContentMatch的PowerShell模块。当这些测试在带有早期版本的pester的机器上运行时,会出现一波错误消息,没有一条能准确地指出问题所在。

我想编写一个简单的pester测试,以检查最低版本,并为用户/测试人员打印一个解释/修复。

更复杂的是,pester可以直接作为脚本运行,而无需作为模块安装在机器上。

我看过使用$(Get-Module -ListAvailable -name "Pester").version提取pester版本,但它只看到PowerShell-“已安装”模块,而不是当前正在执行的版本,正如前面提到的,可能有所不同。

pester传递的一些信号是可以的,但我不认为pester为测试脚本(即版本环境变量)提供了任何元信息。

对解决方案有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-03 09:33:59

您希望检查当前加载的pester模块版本的代码如下所示:

代码语言:javascript
复制
$pesterModules = @( Get-Module -Name "Pester" -ErrorAction "SilentlyContinue" );
if( ($null -eq $pesterModules) -or ($pesterModules.Length -eq 0) )
{
    throw "no pester module loaded!";
}
if( $pesterModules.Length -gt 1 )
{
    throw "multiple pester modules loaded!";
}
if( $pesterModules[0].Version -ne ([version] "4.8.0") )
{
    throw "unsupported pester version '$($pesterModules[0].Version)'";
}

但是选择在哪里运行它要稍微复杂一些--如果你可以在一个纠缠测试中运行它,这将给你当前运行测试的版本。

代码语言:javascript
复制
Describe "check test suite version" {
    Context "pester version" {
        It "should be correct version" {
            ... version check code here ...
        }
    }
}

但是,不管是否加载了正确的版本,这仍然会运行您的主要测试,因此如果加载了错误的版本,您可能会得到大量的背景噪声。

您可以运行上面的测试作为您的主要测试的试飞前检查-调用Invoke-Pester-PassThru开关检查结果,并只调用您的主要测试,如果试飞前测试通过。

或者自己从一个已知的位置加载pester模块,然后调用上面的代码块来验证版本。

票数 1
EN

Stack Overflow用户

发布于 2019-08-30 22:30:56

ModuleVersion中读取模块清单

您可以阅读清单的主要版本如下:

代码语言:javascript
复制
$PesterMajorVersion=(Get-Content path\to\Pester\Pester.psd1|sls ModuleVersion).Line -replace ".*'([\d])+\..*'",'$1'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57733313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档