Invoke-Pester для запуска только одного блока Assert / It - PullRequest
2 голосов
/ 09 июля 2019

Я пишу модульные тесты для моих модулей Powershell, с файлом для каждого модуля и Describe блоками для каждой функции.Блоки Context организуют тесты в соответствии с поведением, которое я пытаюсь протестировать с помощью некоторого кода упорядочения, а мои It блоки содержат минимальный код упорядочения / действия и утверждение.

Я могу ограничить свои тесты только для запуска одного тестового файла с помощью Invoke-Pester "Path/To/Module" Я также могу ограничить на основе блоков Describe с помощью Invoke-Pester "Path/To/Module" -TestName @("RunThisDescribe","AndRunThisDescribe")

Поскольку я добавляюновое утверждение (через новый блок It) для существующего file / Describe / Context, я хочу протестировать / отладить только мое новое утверждение, без остальной части утверждений данного описания / контекста, запущенного(но с любыми макетами / переменными, которые я установил в области описания / контекста, все еще доступны.

Я комментировал свои существующие утверждения, пока я разрабатывал новое, затем удалил комментарии блока и выполнил их всепосле того, как я закончу с новым тестом. Это работает, но неуклюже.

Есть ли способ запустить Invoke-Pester, чтобы выполнить только заданный список It с? Есть ли лучший рабочий процесс для разработки/ отлаживать новые тесты, кроме как позволить всем им запускаться или комментировать их?

1 Ответ

2 голосов
/ 10 июля 2019

Не похоже, что есть способ указать тесты для запуска по имени блока It.

Вы можете разделить новый тест на новый блок Describe, а затем запустить его с помощью параметра -TestName, как вы описали, или задать ему -Tag, а затем указать этот тег с помощью Invoke-Pester, однако похоже, не работает для вложенного Describe, оно должно быть на верхнем уровне.

Я предполагаю, что это не сработает для вас, потому что ваши Mocks и переменные будут в другом описании.

VSCode с установленным расширением PowerShell позволяет запускать отдельные блоки Describe через ссылку «Run Tests» в верхней части Describe, и это работает для вложенных блоков. Однако я не уверен, что это приведет к тому, что Mocks / Variables из родительского блока Describe будут вызваны (я думаю, что нет).

Пример вложенного Describe, который можно запустить по отдельности в VSCode:

Describe 'My-Tests' {

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

    Describe 'NewTest'  {

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

Жаль, что вы не можете в настоящее время помещать теги в блоки Context для фильтрации определенных наборов тестов. Это было запрошено как функция 2 года назад , но это не так просто реализовать.

...