Инструмент устранения неполадок PowerShell Pester позволяет пользователям писать и запускать тесты. Узнайте, как установить инструмент, и изучите пошаговый пример теста Pester.
Если вы когда-либо писали сложный сценарий PowerShell, вы, несомненно, сталкивались с необходимостью устранения неполадок. Как бы ни было приятно, когда все работает идеально с первой попытки, сложные скрипты почти всегда содержат ошибки, которые необходимо исправить. Здесь в игру вступает Пестер.
Что такое Пестер?
Pester — это бесплатный инструмент для устранения неполадок PowerShell, доступный на GitHub. Pester в первую очередь предназначен для выполнения модульных и интеграционных тестов, но вы можете использовать его для устранения неполадок практически любого сценария PowerShell.
Поскольку Pester не является родным компонентом PowerShell, вам придется его установить. Однако Pester включен в некоторые сборки Windows 11. Несмотря на это, процесс установки прост. Просто введите следующие команды в сеанс PowerShell с повышенными правами.
Install-Pester -Force -SkipPublisherCheck Import-Module Pester -PassThru
Команды, показанные выше, работают только в том случае, если политика выполнения вашей системы позволяет запускать загруженный код. Если вам нужно изменить политику выполнения вашей системы, вы можете использовать командлет Set-ExecutionPolicy . Вы можете увидеть, как выглядит процесс установки Pester на рисунке 1. В качестве примечания: вам не нужно беспокоиться о ручной загрузке Pester с GitHub. Перечисленные выше команды автоматически загружают код.
Команды Pester, которые нужно знать
Есть несколько способов использовать Pester, но для целей этой статьи я покажу вам, как выполнить базовый тест. В этом примере мы проверим переменную , чтобы увидеть, содержит ли она ожидаемое значение.
Прежде чем я покажу вам, как выполнить такой тест, вам необходимо ознакомиться со следующими тремя командами:
- Описывать. Команда Describe определяет выполняемый тест и сообщает PowerShell, что вы собираетесь выполнить тест Pester. Вам нужно будет присвоить значение — текстовую строку, которая кратко описывает, что тестируется — для Describe . Думайте о значении Describe как об обязательном комментарии.
- Это. Команда It сообщает Пестеру, что вы хотите протестировать. Обычно команда It ссылается на переменную.
- Должно быть. Обратите внимание, что в отличие от обычного командлета PowerShell перед дефисом стоит пробел. Команда Should -Be сообщает Пестеру, чему должна быть равна переменная, на которую ссылается It . Вы также можете вставить -Not перед -Be , чтобы сообщить Пестеру, что переменная не должна быть равна определенному значению .
Как тестировать с Пестером
Теперь, когда я объяснил основные команды Pester, давайте создадим тест Pester. Вот сценарий, который я буду использовать.
$SumTotal = 2+3 Опишите "Проверьте общую сумму, чтобы убедиться, что она равна 4"{ It 'Итоговая сумма должна быть 4' { $SumTotal | Должно быть 4 } }
Этот сценарий создает переменную с именем $SumTotal, которая устанавливается равной 2+3 или 5. Следующая строка содержит оператор Describe о том, что должно быть протестировано. Обратите внимание, что после описания стоит фигурная скобка.
Далее идет строка, содержащая оператор It . Оператор It состоит из слова «It», описания и фигурной скобки. Причина, по которой строка It включает описание, когда мы только что предоставили его через строку Describe , заключается в том, что раздел Describe может содержать несколько операторов It . В такой ситуации в строке описания может быть указана общая цель группы тестов, а в каждом операторе It указана причина выполнения этого отдельного теста.
За строкой It следует еще одна строка, указывающая, что переменная $SumTotal должна быть равна 4. Но поскольку переменная равна 5, этот тест не должен пройти.
Во многих документах Pester указано, что вам нужно использовать команду Invoke-Pester , за которой следует имя скрипта. В моем случае скрипт называется Test.ps1, поэтому команда будет Invoke-Pester Test.ps1 . Однако, по моему опыту, этот метод иногда указывает на то, что тест не пройден, хотя он должен был пройти. Мне повезло запустить сценарий так же, как и любой другой сценарий PowerShell (.\Test.ps1).
Если вы посмотрите на рисунок 2, вы увидите, что тест не прошел, как и ожидалось. Пестер даже заходит так далеко, что говорит, что значение переменной $SumTotal должно быть равно 4, но равно 5. Напротив, на рис. 3 показано, что происходит, когда я изменяю сценарий , чтобы установить переменную $SumTotal равной 4. На этот раз Пестер указывает, что тест пройден.