Powershell 调用Pester仅运行单个Assert/It块

Powershell 调用Pester仅运行单个Assert/It块,powershell,testing,pester,Powershell,Testing,Pester,我正在为我的Powershell模块编写单元测试,每个模块都有一个文件,每个函数都有description块上下文块按照我试图用一些排列代码测试的行为组织测试,而我的It块包含最小的排列/动作代码和断言 通过使用Invoke Pester“Path/to/Module” 我还可以使用调用Pester“Path/To/Module”-TestName@(“runThisDescripte”,“andrunThisDescripte”) 当我向现有的文件/描述/上下文添加一个新断言(通过一个新的It

我正在为我的Powershell模块编写单元测试,每个模块都有一个文件,每个函数都有
description
块<代码>上下文块按照我试图用一些排列代码测试的行为组织测试,而我的
It
块包含最小的排列/动作代码和断言

通过使用
Invoke Pester“Path/to/Module”
我还可以使用
调用Pester“Path/To/Module”-TestName@(“runThisDescripte”,“andrunThisDescripte”)

当我向现有的
文件
/
描述
/
上下文
添加一个新断言(通过一个新的
It
块)时,我想单独测试/调试我的新断言,而不运行给定描述/上下文的其余断言(但是我在descripe/context范围内设置的任何mock/variables仍然可用

在开发新的断言时,我一直在注释掉我现有的断言,然后删除块注释,并在完成新的测试后运行它们

有没有办法运行
Invoke Pester
只执行给定的
It
s列表?
除了让所有测试都运行或注释它们之外,还有更好的工作流程用于开发/调试新测试吗?

似乎没有任何方法可以通过
It
块的名称指定要运行的测试

您可以将新测试拆分为一个新的
descripe
块,然后通过所述的
-TestName
参数运行它,或者给它一个
-Tag
,然后通过
Invoke Pester
指定该标记,但是对于嵌套的
descripe
,它必须在顶层

我认为这对您不起作用,因为您的模拟和变量将在另一个描述中

安装了PowerShell扩展的VSCode允许您通过Descripte顶部的“run Tests”链接运行单个Descripte块,这对嵌套块有效。但是我不确定这是否会导致调用父Descripte块中的模拟/变量(我猜不会)

嵌套的
描述
示例,可在VSCode中单独运行:

Describe 'My-Tests' {

    It 'Does something' {
        $true | Should -Be $true
    }

    Describe 'NewTest'  {

        It 'Does something new' {
            $true | Should -Be $true
        }
    }
}
遗憾的是,您目前无法在
上下文
块上放置标记以过滤某些测试集。这是一个很好的方法,但似乎并不容易实现。

我知道,这个问题很老,但值得更新: 从Pester版本5开始,您可以在所有内容上都有一个
-Tag
描述
上下文

这使得运行特定断言变得非常容易,而无需其他操作。 您甚至可以使用
-ExcludeTag
排除特定代码

详情请参阅


如果您计划从版本4迁移到版本5,还可以查看刹车的变化!

您链接到的GitHub问题表明,在即将发布的版本5中,
Context
块上的标记将得到支持(在本文撰写之时,该版本处于alpha阶段)。