what-is-pester.jpg

Wat is Pester voor PowerShell?

Wat is Pester voor PowerShell?

Naarmate u afhankelijk begint te worden van uw PowerShell-scripts voor belangrijkere taken, zult u ontdekken dat het bouwen van tests voor die scripts noodzakelijk wordt.

Als u een IT-professional bent en vandaag PowerShell-scripts schrijft, bent u misschien niet bekend met de term 'softwaretests'. Dat is OK. Softwareontwikkelaars en testers schrijven al tientallen jaren tests voor code, maar dat is het tot voor kort niet meer geweest. dat wij IT-professionals code zijn gaan schrijven waar onze bedrijven van afhankelijk zijn.

Software testen draait om het schrijven van code om code te verifiëren. Hoewel dit misschien vreemd klinkt, zul je zien dat het schrijven van tests voor je code niet veel anders is dan het schrijven van de code zelf; althans niet als het gaat om PowerShell.

Automate IT tasks met PowerShell. Download het eBook. 

Voor het testen van PowerShell-code is het de facto testframework Pester. Pester is een open source-project dat is gebouwd als een PowerShell-module die vooraf is geïnstalleerd met Windows 10 en Windows Server 2016. Pester kan ook op oudere systemen draaien door een kopie te downloaden uit de PowerShell Gallery of te downloaden van Github. Pester is een project dat specifiek geschreven testscripts leest en, in een notendop, u een groen / rode uitvoer geeft om aan te geven of verschillende tests zijn geslaagd.

Om iets meer te weten te komen over Pester en hoe u tests voor PowerShell kunt schrijven, laten we een eenvoudig stukje code nemen en er een paar tests voor schrijven. We gebruiken het onderstaande script als voorbeeld:

function Do-Something {
    param(
        $String
    )

    if ($String -eq 1) {
        'string was not right'
    } else {
        'string was something else'
    }
}

In de bovenstaande functie wil ik ervoor zorgen dat wanneer een waarde van 1 wordt doorgegeven aan $String dat de functie de tekenreeks 1 retourneert en als $String iets anders is, de functie de tekenreeks retourneert iets anders was. We kunnen gebruiken Pester om dit te laten gebeuren. Om hiervoor een test te maken, moeten we eerst een ander PowerShell-script maken en het laten eindigen met Tests.ps1. Technisch gezien is dit niet nodig, maar het is de beste praktijk om dit te doen.

Gerelateerde podcast: Wat is er aan de hand met PowerShell en Pester?

Pester-tests bestaan uit scriptblokken die IT blocks worden genoemd en het blokkeert. Deze organiseren al uw tests. Als u bijvoorbeeld een klein raamwerk van tests voor onze code hierboven uitbouwt, kan het er ongeveer zo uitzien:

describe 'Do-Something' {

    it "when 1 is passed as String, it returns 'string was 1'" {

    }

    it "when anything other than 1 is passed as String, it returns 'string was something else'" {

    }
}

Dit formaat van het plaatsen van de individuele tests (it blocks) in describe blocks / beschrijvingsblokken is hoe tests worden gebouwd. Zodra u de basisstructuur hebt gebouwd, is het tijd om de code uit te voeren en de tests uit te voeren. Een manier om te doen dit is om de code in het beschrijvende blok en vervolgens binnen in de it-blokken aan te roepen om het verwachte resultaat te bevestigen. In dit geval ga ik de functie op twee verschillende manieren uitvoeren om aan mijn tests te voldoen. Ik zal dan controleren of de uitvoer was zoals verwacht met behulp van het zoekwoord; should.

describe 'Do-Something' {

    it "when 1 is passed as String, it returns 'string was 1'" {
        Do-Something -String 1 | should be 'string was 1'
    }

    it "when anything other than 1 is passed as String, it returns 'string was something else'" {
        Do-Something -String 'something else' | should be 'string was something else'
    }
}

U kunt zien dat het trefwoord should ons in staat stelt om aan te geven wat we verwachten te zien van de uitvoer. Het trefwoord should kan een aantal verschillende waarden controleren. Zodra je de test hebt gebouwd, moet deze worden uitgevoerd. Dat gebeurt door middel van de opdracht Invoke-Pester. Met deze opdracht kunt u slagen voor uw testscript en het test framework doorlopen. Hieronder zie je hoe dit eruit ziet:

P

PS> Invoke-Pester -Path C:\Do-Something.Tests.ps1
Describing Do-Something
  [+] when 1 is passed as String, it returns 'string was 1' 131ms
  [+] when anything other than 1 is passed as String, it returns 'string was something else' 21ms

Als ik nu de code op de een of andere manier verander en de test opnieuw uitvoer, kan ik onmiddellijk feedback krijgen dat er iets mis is.

Describing Do-Something
  [-] when 1 is passed as String, it returns 'string was 1' 105ms
    Expected string length 12 but was 20. Strings differ at index 11.
    Expected: {string was 1}
    But was:  {string was not right}
    ----------------------^
    at line: 4 in
    4:         Do-Something -String 1 | should be 'string was 1'
  [+] when anything other than 1 is passed as String, it returns 'string was something else' 24ms

 

Pester kan veel andere testtaken uitvoeren, zoals het testen van de configuratie van de infrastructuur, allerlei verschillende coderoutines enzovoort. Als je geïnteresseerd bent om te leren wat Pester voor u kan doen, raad ik u aan het Pester eBook te bekijken. Dit boek bevat alles wat u moet weten om met Pester aan de slag te gaan.

New Call-to-action


Comments
Comments are disabled in preview mode.