Wanneer je een script uitvoert, hoe weet je zeker dat het precies heeft gedaan wat je bedoelde? Misschien heeft het een bestand verwijderd of een service gestopt. Maar heeft het dit foutloos gedaan in elke omgeving, gebruikerssessie of machine die het heeft aangeraakt? Als je script invloed heeft op tientallen – testen met Pester is je beste gok.
Pester, de krachtige PowerShell-module, helpt je geautomatiseerde tests te schrijven met behulp van een domeinspecifieke taal (DSL). In deze tutorial leer je het giswerk uit te schakelen en een ijzersterk proces te creëren om je scripts te valideren.
Riem vast en laat Pester je scriptvertrouwen versterken!
Installeren en configureren van Pester
Pester zorgt ervoor dat de acties van je script overeenkomen met je verwachtingen in elke omgeving. Testen met Pester is een essentiële vaardigheid voor het beheren van infrastructuur met PowerShell.
Maar eerst moeten we Pester installeren om wat tests op te bouwen rond een script dat een server voorziet om te zien hoe Pester-tests werken.
Je kunt de Pester
-module downloaden van de PowerShell Gallery:
Install-Module Pester
Als je een waarschuwing tegenkomt, kan dat zijn omdat Windows 10 (en latere) clients standaard een oudere versie van Pester geïnstalleerd hebben. Bijvoorbeeld, versie 3.4.0 is vaak vooraf geïnstalleerd.
Zorg ervoor dat je de oude versie verwijdert om conflicten te voorkomen:
$module = "C:\Program Files\WindowsPowerShell\Modules\Pester\3.4.0" takeown /F $module /A /R icacls $module /reset icacls $module /grant "*S-1-5-32-544:F" /inheritance:d /T Remove-Item -Path $module -Recurse -Force -Confirm:$false
Deze script neemt eigenaarschap van de Pester 3.4.0 map, werkt machtigingen bij en verwijdert het.
Installeer de nieuwste versie van Pester door de parameter -Force
toe te voegen:
Install-Module Pester -Force
Je kunt een andere waarschuwing zien met betrekking tot de handtekening van de nieuwe versie. Microsoft heeft de vooraf geïnstalleerde versie ondertekend, terwijl de beheerder van Pester, Jakub, de nieuwste versie heeft ondertekend.
Controleer de geïnstalleerde versie met het volgende commando:
Get-Module -Name Pester -ListAvailable
Het maken van een Pester-testbestand
Nu Pester is geïnstalleerd, laten we wat tests maken. Stel voor demonstratiedoeleinden dat een script is belast met het installeren van de IIS Windows-functie.
Maak een PowerShell-script met de naam ServerProvisioning.Tests.ps1 in de gewenste map; laten we zeggen dat het in je ~\Documenten map staat.
Vervolgens voer Pester-tests uit met het Invoke-Pester
cmdlet:
cd ~\Documents Invoke-Pester
Als je dit commando uitvoert zonder tests beschikbaar, worden er geen tests uitgevoerd.
Laten we wat tests toevoegen met behulp van de hiërarchische blokstructuur van Pester, waar:
describe
een categorie tests vertegenwoordigt, zoals de belangrijkste functionaliteit van een script.context
optioneel tests in subcategorieën organiseert.it
individuele tests definieert.
describe 'IIS' { context 'Windows features' { it 'installs the Web-Server Windows feature' { } } } describe 'RegistryTweaks' { } describe 'SoftwareInstalls' { }
Een test toevoegen en uitvoeren
Stel je een script voor dat een server voorziet maar een cruciale stap mist, zoals het inschakelen van een vereiste functie. Als dit niet wordt gecontroleerd, kan deze fout ernstige gevolgen hebben in productie.
Stel dat het serverprovisioning-script is uitgevoerd en de taak is om te bevestigen dat de Web-Server
-functie is geïnstalleerd. Als dat zo is, voer dan een handmatige controle uit.
Voer de volgende opdracht uit om handmatig te controleren of de Web-Server
-functie (IIS) is geïnstalleerd op de externe server.
Invoke-Command -ComputerName SRV1 -ScriptBlock { (Get-WindowsFeature -ComputerName SRV1 -Name Web-Server).Installed }
Deze opdracht geeft True
terug als de functie is geïnstalleerd en anders False
.
Voeg nu het volgende toe aan het it
-blok om deze test te automatiseren. De should
-operator met de voorwaarde -BeTrue
bevestigt dat de functie is geïnstalleerd.
describe 'IIS' { context 'Windows features' { it 'installs the Web-Server Windows feature' { Invoke-Command -ComputerName SRV1 -ScriptBlock { (Get-WindowsFeature -ComputerName SRV1 -Name Web-Server).Installed } | should -BeTrue } } }
Rerun tot slot de test:
cd ~\documents Invoke-Pester
Zoals verwacht zal de test mislukken als de functie niet is geïnstalleerd.
VS Code heeft ook een geweldige Pester-integratie. In plaats van Invoke-Pester
uit te voeren, kunt u in VS Code rechtstreeks op de item Run Tests
klikken bij individuele tests. Deze actie roept specifieke tests op.
Conclusie
In deze tutorial heb je geleerd hoe je Pester kunt gebruiken om het testen van je PowerShell-scripts te automatiseren. Je hebt de basisstappen behandeld om je scripts effectief te valideren. Deze stappen omvatten het installeren en configureren van Pester, het maken van een testbestand en het schrijven van je eerste geautomatiseerde test.
Bouw voort op deze basis door te onderzoeken hoe Pester meer geavanceerde scenario’s kan behandelen, zoals het testen van API’s, het belachelijk maken van opdrachten of het uitvoeren van validaties vóór en na implementatie.
Naarmate je Pester integreert in je workflow, zul je je scripts verbeteren en vertrouwen krijgen in hun betrouwbaarheid—schakel met vertrouwen op naar het schalen van je automatiseringsinspanningen!
Source:
https://adamtheautomator.com/powershell-pester-testing-guide/