PesterによるPowerShellコードのテスト


任意のコードで作業しているとき、それがオートメーションかソフトウェアコードであるかどうか、それは同じように扱われるべきです.結局のところ、関数はまだ機能し、変数はまだ変数です.アプリケーションコードを構築しているときに自動化するときに頻繁に来ない多くのことの一つがテストコードです.
単体テストと模擬試験はスクリプト化と自動化に非常に重要である.
このシナリオについて考えてください:私はローカルでPowerShell機能をテストして、それは働きます!それは私がする必要がある正確なことをしました、そして、現在、私はそれが後で使われることができるように、Githubにそれを保存するつもりです.
それはローカルでテストされたが、しかし、あなたが走ったテストは現在過去にあります、そして、いくつかのことが起こることができます
  • 新しいバージョンのコードを作成できます.
  • バグは、コードを変更することによって導入することができます.
  • 新機能を追加することができます.
  • コードは、異なるシステムまたはオペレーティングシステムで使用されます.
  • 使用しているPowerShellモジュールを更新または変更します.
  • PowerShellモジュールが変更されているAPI呼び出しを呼び出します.
  • 上記の点で、あなたがローカルに走らせたテストはもはや有効です.
    このブログ記事では、PowerShellと呼ばれる最も人気のあるテストフレームワークの使い方を学びますPester .

    必要条件


    このブログ記事に沿ってフォローするには、次の手順が必要です.
  • 理解unit testing そしてそれは何のために使用されます.
  • PowerShellの中間レベルの知識への初心者.

  • PowerShell Core 任意のオペレーティングシステムにインストールされます.

  • Visual Studio Code (VS Code) インストール.
  • インストールスター


    これがPESTARフレームワークを実行したのは、オペレーティングシステムによっては初めてです.インストールプロセスはInstall-Module CMDREletは、すべてのオペレーティングシステムでPowerShellでネイティブです.
    Pesterをインストールするには、次のcmdletを実行します.
    Install-Module -Name Pester
    
    Cmdletを実行した後、以下のスクリーンショットに似た出力が表示されます.すべてのモジュールを受け入れ、pesterがインストールされます.インストールを確認するには、次のCmdletを実行します.
    Get-InstalledModule -Name Pester
    

    テストするPowerShellコードを見てみましょう


    任意の並べ替えのテストを実行する前に、使用する星のテストのためのコードが必要です.pesterで一見を取るために、テストは複雑である必要はありません.これは、コードの行のカップルで構成される単純なpowershell機能することができます.この節では、テストするコードを見てみましょう.
    オープンVSコードと存在するパワーシェル関数の新しいファイルを作成します.
    以下のPowerShell関数は以下のようになります.
  • 新しい関数を作成するCreate-Dir
  • Aをセットアップするcmdletbinding()[] 関数を高度な関数にします.高度な関数では、冗長性、エラー処理などを使用できます.
  • Paramブロックは2つのパラメータを設定します.新しいディレクトリと新しいディレクトリ名を作成するパス.
  • パスを作成するために使用されるcmdletNew-Item .
  • 以下のコードを実行し、ディレクトリ名とパスを指定すると、新しいディレクトリが作成されたことがわかります.
    function Create-Dir {
        [cmdletbinding()]
        param(
            [string]$path,
            [string]$dirName
        )
    
        New-Item -Name $dirName -Path $path
    }
    
    以下のスクリーンショットは、/usr/michaellevan/ディレクトリにtestpathというディレクトリを作成する例を示します.

    最初のテストを書く


    今、あなたが適所にコードを持っているので、あなたがテストを望むものを理解することができます.pester試験は長さだけでなく機能性に基づいて変化する.このセクションでは、あなたが始めるために、基本的なpester testを見ます.
    ソフトウェア開発の実践があるTest Driven Development (TTD) ここで、最初にテストを定義し、それらのテストに基づいてコードを書き込みます.このブログのポストは、その方法論に従っていませんが、それは確かに興味深いトピックです.
  • コード内で、新しいファイルを開き、名前を付けますTests.ps1 . The Tests キーワードはPowerShellにテストを実行していることを知っています、そして、VSコードはいくつかの余分の能力を与えます.
  • Tests.ps1 以下のコードでペーストします.
  • Describe "Directory Creation" {
        Context 'Path' {
            It 'should contain: path_that_you_used_for_the_function'
            $path = 'path_that_you_used_for_the_function'
            $path | Should -Exist
        }
    
        Context "New Directory" {
            It 'Should create a new directory called TestDir'
            $dir = 'TestDir'
            $dir | Should -Be 'TestDir'
        }
    }
    
    テストを実行する前に、それをやりましょう.
  • あなたはDescribe ブロック.descriptionブロックは、PowerShellテストのグループを定義します.すべてのpesterファイルは少なくとも1つの記述ブロックを含まなければなりません.
  • あなたが見る2番目のブロックはContext . コンテクストブロックは、記述ブロックの内部でサブグループテストを定義します.コンテキストは便利ですので、テストの複数のブロックを書くことができます.
  • コンテキストブロック内で、It . It は単一のテストケースを定義するために使用されます.It あなたが自然言語文のようなコード音を作ることができるので、本当に素晴らしいです.例えば、It テストは'を含める必要があります/ユーザー/michaellevan ';.
  • テストを定義する場所では、Should . The Should コマンドはアサーションを定義するために使用されます.
  • テストが一度Tests.ps1 以下のスクリーンショットに示すように、テストを実行するいくつかのオプションが表示されます.

    ユニットテストを行う


    前の節では、テストがどのように見えるかを正確に定義しました.テストは2つの個々のテストをする必要があります新しいディレクトリがtestdirと呼ばれるかどうかをテストするためのパスと他のテストをするためのものです.
    この節では、テストの実行方法と出力の仕方を学びます.
    内部Tests.ps1 ファイルをクリックし、テストを実行するボタンをクリックします.テストを実行したら、以下のスクリーンショットに似た出力が表示されます.
    ご覧の通り、テストはディレクトリを見つけ、作成された新しいディレクトリがtestdirであることを確認しました.

    おめでとう!あなたは正式に作成し、テストを実行してpester、powershellテストフレームワークを使用します.

    結論


    どんなタイプのコードを書いているのか、どのように見えるか、どのように機能しているかを知っていますが、1日、週、月、または1年でコードが変更され、機能が異なる場合やバグが発生する可能性がある場合にはバグが発生します.テストを任意のコードに適合させると、これらのことが起こるリスクが少なくなります.
    このブログの記事では、どのような星は、なぜあなたはそれを使用する必要がありますどのように使用する方法を学びました.あなたがスタースターに飛び込みたいならば、私はアダムBertramによってこの本を推薦します:The Pester Book .
    あなたがこのブログ柱で使われるコードを見つけたいならば、チェックしてくださいGitHub repo .