簡體   English   中英

Invoke-Pester 只運行一個 Assert/It 塊

[英]Invoke-Pester to only run a single Assert/It block

我正在為我的 Powershell 模塊編寫單元測試,每個模塊都有一個文件,每個函數都有Describe塊。 Context塊沿着我嘗試使用一些排列代碼測試的行為組織測試,我的It塊包含最少的排列/動作代碼和斷言。

我可以使用Invoke-Pester "Path/To/Module"將我的測試限制為僅運行單個測試文件 我還可以使用Invoke-Pester "Path/To/Module" -TestName @("RunThisDescribe","AndRunThisDescribe")根據Describe塊進行限制Invoke-Pester "Path/To/Module" -TestName @("RunThisDescribe","AndRunThisDescribe")

當我向現有file / Describe / Context添加新斷言(通過新的It塊)時,我想單獨測試/調試我的新斷言,而不運行給定 describe/context 的其余斷言(但使用我在描述/上下文范圍內設置的任何模擬/變量仍然可用。

在開發新斷言時,我一直在注釋掉我現有的斷言,然后在完成新測試后刪除塊注釋並運行它們。 這有效,但很笨重。

有沒有辦法運行Invoke-Pester只執行給定的It列表? 除了讓所有測試都運行或將它們注釋掉之外,是否有更好的工作流程來開發/調試新測試?

看起來沒有任何方法可以通過It塊的名稱指定要運行的測試。

您可以將新測試拆分為新的Describe塊,然后按照您的描述通過-TestName參數運行它,或者給它一個-Tag然后通過Invoke-Pester指定該標簽,但這似乎不適用於一個嵌套的Describe ,它必須在頂層。

我認為這對您不起作用,因為您的模擬和變量將在另一個描述中。

安裝了 PowerShell 擴展的 VSCode 允許您通過描述頂部的“運行測試”鏈接運行單個描述塊,這對嵌套塊有效。 但是我不確定這是否會導致調用父 Describe 塊中的 Mocks/Variables(我的猜測不會)。

嵌套的Describe示例,可以在 VSCode 中單獨運行:

Describe 'My-Tests' {

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

    Describe 'NewTest'  {

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

很遺憾,您目前不能將標簽放在Context塊上以過濾/過濾某些測試集。 這是2 年前要求的功能,但實現起來似乎並不簡單。

我知道,這個問題已經很老了,但值得更新:

從 Pester 版本 5 開始,您可以在所有內容上添加-TagDescribeContextIt

這使得運行特定斷言變得非常容易,僅此而已。 您甚至可以使用-ExcludeTag排除特定代碼。

有關詳細信息,請參閱https://github.com/pester/Pester#tags

如果您打算從版本 4 遷移到 5,還請查看制動更改!

要添加到Tofuburger 的答案,並且基於 Pester 5.3.1,您還可以在測試腳本中基於標簽以編程方式操作測試。

Describe 'Colour' -Tag 'Epistemology' {

    BeforeAll {
        $ParentBlockTags = $____Pester.CurrentBlock.Tag
        if ($ParentBlockTags -eq 'Epistemology')
        {
            Set-ItResult -Inconclusive
        }
    }

    BeforeEach {
        $ItTags = $____Pester.CurrentTest.Tag
        if ($ItTags -eq 'HSL')
        {
            Set-ItResult -Skipped -Because 'Not implemented'
        }
    }

    It 'Saturates' -Tag 'HSL' {
        1 | Should -Be 2
    }

    It 'Greens' -Tag 'RGB' {
        1 | Should -Be 3
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM