Как протестировать код PowerShell с помощью Pester

Прочитано: 93 раз(а)


Инструмент устранения неполадок 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. На этот раз Пестер указывает, что тест пройден.

Эдвард Сноуден назвал взлом серверов АНБ «приветом из России»



Новости партнеров