Övning – Skapa och köra anpassade tester med testverktyget
Som medlem i produktteamet vet du hur viktigt det är att kunna implementera vissa team- eller domänspecifika regler. Ett sätt att göra detta är att implementera reglerna som tester. Du kan sedan köra testerna med hjälp av testverktyget.
Skriva och köra ett anpassat test
Du kommer att skapa ett anpassat test och köra det med testverktyget. Du korrigerar även distributionsmallen för att testet ska lyckas. Det anpassade testet ska kontrollera att alla parametrar följer en namngivningsregel. Den här regeln är ett domänspecifikt krav i det produktteam där du jobbar.
Vi rekommenderar att du har två textredigeringsprogram öppna under den här övningen:
- Skriva ett anpassat test. Leta rätt på sökvägen till underkatalogen arm-ttk/testcases/deploymentTemplate/ i installationskatalogen för testverktyget. Härifrån kan du köra Visual Studio Code, där du kommer att skapa och redigera ett anpassat test.
- Skapa en mallfil och köra tester. Du väljer den plats som du vill använda för den här sökvägen. Vi rekommenderar att du startar en instans av Visual Studio Code från den här sökvägen så att du enkelt kan redigera filen azuredeploy.json när du uppmanas att göra det. Starta även en integrerad terminal i den här Visual Studio Code-instansen så att du enkelt kan köra tester.
Skapa mallfilen
Välj en katalog och skapa en fil med namnet azuredeploy.json.
Varning
Se till att katalogen är tom och att det inte finns några underkataloger.
Lägg till följande innehåll:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": []
}
Skapa det anpassade testet
Öppna Visual Studio Code och gå till installationskatalogen för testverktyget. Navigera till underkatalogen arm-ttk/testcases/deploymentTemplate. Kör följande kommando:
code .
Kommentar
Öppna Visual Studio Code manuellt och öppna katalogen om Visual Studio Code inte redan är vid sökvägen.
Skapa en anpassad testfil med namnet Custom-ParameterNaming.test.ps1. Ge filen följande innehåll:
param( [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array [PSObject] $MainTemplateResources ) Write-Error "To be implemented"
Låt textredigeringsprogrammet vara öppet. Du kommer att redigera den här filen senare.
Köra det anpassade testet
Kör det anpassade testet med följande steg:
Öppna ett nytt terminalfönster eller använd det gamla.
Gå till den katalog där du skapade azuredeploy.json. Starta Visual Studio Code med följande kommando:
code .
Kommentar
Öppna Visual Studio Code manuellt och öppna mallkatalogen om Visual Studio Code inte redan är vid sökvägen.
Öppna den integrerade terminalen i Visual Studio Code genom att välja Terminal>Ny terminal på huvudmenyn. Skapa en PowerShell-session genom att köra följande kommando i terminalen:
pwsh
Du bör se utdata som liknar det här:
PowerShell 7.0.3 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help.
Kör
Import-Module
i terminalen.Kommentar
Innan du importerar modulen ska du ersätta path/to/arm-ttk/arm-ttk.psd1 med sökvägen till det nedladdade testverktyget.
Import-Module path/to/arm-ttk/arm-ttk.psd1
Dricks
Om du har laddat ned eller klonat verktyget till katalogen Nedladdningar ser sökvägen ut ungefär så här: /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1.
Nu kan du använda verktyget. Så länge som du är kvar i samma PowerShell-session behöver du inte köra importkommandot igen.
Kör
Test-AzTemplate
i terminalen för att starta en testkörning:Test-AzTemplate -TemplatePath .
Dina utdata liknar följande. Observera att de markerade raderna visar testet:
Validating custom\azuredeploy.json JSONFiles Should Be Valid [+] JSONFiles Should Be Valid (56 ms) Pass : 1 Fail : 0 Total : 1 adminUsername Should Not Be A Literal [+] adminUsername Should Not Be A Literal (68 ms) apiVersions Should Be Recent In Reference Functions [+] apiVersions Should Be Recent In Reference Functions (203 ms) apiVersions Should Be Recent [+] apiVersions Should Be Recent (137 ms) artifacts parameter [+] artifacts parameter (145 ms) CommandToExecute Must Use ProtectedSettings For Secrets [+] CommandToExecute Must Use ProtectedSettings For Secrets (171 ms) deploymentTemplate [-] Custom ParameterNaming (354 ms) To be implemented DependsOn Best Practices [+] DependsOn Best Practices (152 ms) Deployment Resources Must Not Be Debug [+] Deployment Resources Must Not Be Debug (152 ms) DeploymentTemplate Must Not Contain Hardcoded Uri [+] DeploymentTemplate Must Not Contain Hardcoded Uri (185 ms) DeploymentTemplate Schema Is Correct [+] DeploymentTemplate Schema Is Correct (197 ms) Dynamic Variable References Should Not Use Concat [+] Dynamic Variable References Should Not Use Concat (157 ms) IDs Should Be Derived From ResourceIDs [+] IDs Should Be Derived From ResourceIDs (69 ms) Location Should Not Be Hardcoded [+] Location Should Not Be Hardcoded (260 ms) ManagedIdentityExtension must not be used [+] ManagedIdentityExtension must not be used (70 ms) Min And Max Value Are Numbers [+] Min And Max Value Are Numbers (213 ms) Outputs Must Not Contain Secrets [+] Outputs Must Not Contain Secrets (76 ms) Parameter Types Should Be Consistent [+] Parameter Types Should Be Consistent (68 ms) Parameters Must Be Referenced [+] Parameters Must Be Referenced (93 ms) Password params must be secure [+] Password params must be secure (111 ms) providers apiVersions Is Not Permitted [+] providers apiVersions Is Not Permitted (68 ms) ResourceIds should not contain [+] ResourceIds should not contain (210 ms) Resources Should Have Location [+] Resources Should Have Location (113 ms) Resources Should Not Be Ambiguous [+] Resources Should Not Be Ambiguous (147 ms) Secure Params In Nested Deployments [+] Secure Params In Nested Deployments (242 ms) Secure String Parameters Cannot Have Default [+] Secure String Parameters Cannot Have Default (129 ms) Template Should Not Contain Blanks [+] Template Should Not Contain Blanks (201 ms) URIs Should Be Properly Constructed [+] URIs Should Be Properly Constructed (180 ms) Variables Must Be Referenced [+] Variables Must Be Referenced (132 ms) Virtual Machines Should Not Be Preview [+] Virtual Machines Should Not Be Preview (91 ms) VM Images Should Use Latest Version [+] VM Images Should Use Latest Version (114 ms) VM Size Should Be A Parameter [+] VM Size Should Be A Parameter (130 ms) Pass : 31 Fail : 1 Total : 32
Nu när du har hittat testet låter du det här terminalfönstret vara öppet. Du kommer att använda det igen senare.
Omstrukturera det anpassade testet
Nu ska du ge det anpassade testet en lämplig implementering.
Gå tillbaka till det textredigeringsprogram som innehåller filen Custom-ParameterNaming.test.ps1.
Kommentar
Om du har stängt Visual Studio Code av misstag går du till underkatalogen arm-ttk/testcases/deploymentTemplate och öppnar Custom-ParameterNaming.test.ps1.
Ersätt innehållet i filen med följande kod:
<# .Synopsis Ensures that all parameters adheres to a naming standard .Description All parameters should start with the company specific prefix 'tailwind' #> param( # The Template Object [Parameter(Mandatory = $true, Position = 0)] [PSObject] $TemplateObject, # The Template JSON Text [Parameter(Mandatory = $true, Position = 0)] [PSObject] $TemplateText ) foreach ($parameter in $TemplateObject.parameters.psobject.properties) { # If the parameter name starts with tailwind, then the parameter is correctly named if ($parameter.Name -notmatch 'tailwind*') { Write-Error "Parameter '$($parameter.Name)' must start with prefix 'tailwind'" -TargetObject $parameter } }
Föregående kod itererar genom alla parametrar. Den inspekterar
name
attributet och kontrollerar om namnet börjar med prefixettailwind
. Om den inspekterade parametern inte matchar namngivningsregeln anropar koden cmdletenWrite-Error
med ett lämpligt felmeddelande.
Uppdatera mallfilen
Nu ska du lägga till en parameter i mallfilen.
Välj det textredigeringsprogram som innehåller filen azuredeploy.json och ändra filens innehåll till följande innehåll:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "metadata": { "description": "a deployment location" } } }, "resources": [] }
Föregående mallinnehåll definierar en parameter med namnet
location
som inte uppfyller namngivningsregeln eftersom den saknar prefixettailwind
.
Köra testverktyget igen
Nu har du skrivit ett anpassat test. Mallfilens namn uppfyller dock inte kravet. Du förväntar dig därför att den kommande testkörningen misslyckas. Se till att det blir så genom att vidta följande steg.
Använd det befintliga terminalfönstret i Visual Studio Code där du har startat PowerShell och importerat testverktyget.
I Visual Studio kör du Test-AzTemplate
från den integrerade terminalen:
Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Föregående kommando körs med parametern -Test
, som tar ett testnamn som indata. Du har angett Custom-ParameterNaming
som en parameter, vilket innebär att endast ditt nyutvecklade test kommer att köras.
Dricks
Det är bra att använda parametern -Test
när du utvecklar ett test eftersom det begränsar vad som körs och storleken på terminalutdata.
Kommandot ger följande utdata:
Validating custom\azuredeploy.json
deploymentTemplate
[-] Custom ParameterNaming (2ms)
Parameter 'location' must start with prefix 'tailwind'
Resultatet indikerar att testet fungerar. Se till att det blir så genom att ändra distributionsfilen.
Korrigera mallfilen
Nu bör du kontrollera att det anpassade testet fungerar genom att ändra mallfilen så att den följer reglerna i det anpassade testet.
I samma Visual Studio Code-instans som visar filen azuredeploy.json ändrar du filens innehåll till följande:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "tailwindLocation": { "type": "string", "metadata": { "description": "a deployment location" } } }, "resources": [] }
Parametern med namnet
location
har bytt namn tilltailwindLocation
. Den här parametern bör nu klara testet. Vi kontrollerar det.Fortsätt i samma Visual Studio Code-instans och kör
Test-AzTemplate
i terminalen:Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Nu ska utdata se ut så här:
Validating custom\azuredeploy.json deploymentTemplate [+] Custom ParameterNaming (2 ms)
Lyckades! Du har implementerat och kört ett anpassat test. Du har även korrigerat en distributionsmall som matchar testets villkor.
Skriva och köra ett anpassat test
Du kommer att skapa ett anpassat test och köra det med testverktyget. Du korrigerar även distributionsmallen för att testet ska lyckas. Det anpassade testet ska kontrollera att alla parametrar följer en namngivningsregel. Den här regeln är ett domänspecifikt krav i det produktteam där du jobbar.
Vi rekommenderar att du har två textredigeringsprogram öppna under den här övningen:
- Skriva ett anpassat test. Leta rätt på sökvägen till underkatalogen arm-ttk/testcases/deploymentTemplate/ i installationskatalogen för testverktyget. Härifrån kan du köra Visual Studio Code, där du kommer att skapa och redigera ett anpassat test.
- Skapa en mallfil och köra tester. Du väljer den plats som du vill använda för den här sökvägen. Vi rekommenderar att du startar en instans av Visual Studio Code från den här sökvägen så att du enkelt kan redigera filen azuredeploy.json när du uppmanas att göra det. Starta även en integrerad terminal i den här Visual Studio Code-instansen så att du enkelt kan köra tester.
Skapa mallfilen
Välj en katalog och skapa en fil med namnet azuredeploy.json.
Varning
Se till att katalogen är tom och att det inte finns några underkataloger.
Lägg till följande innehåll:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": []
}
Skapa det anpassade testet
Öppna en terminal. Gå till installationskatalogen för testverktyget. Navigera till underkatalogen arm-ttk/testcases/deploymentTemplate. Kör följande kommando:
code .
Kommentar
Öppna Visual Studio Code manuellt och öppna katalogen om Visual Studio Code inte redan är vid sökvägen.
Skapa en anpassad fil med namnet Custom-ParameterNaming.test.ps1. Ge filen följande innehåll:
param( [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array [PSObject] $MainTemplateResources ) Write-Error "To be implemented"
Låt textredigeringsprogrammet vara öppet. Du kommer att redigera den här filen senare.
Köra det anpassade testet
Kör det anpassade testet med följande steg:
Öppna ett nytt terminalfönster eller använd det gamla.
Gå till den katalog där du skapade azuredeploy.json. Starta Visual Studio Code med följande kommando:
code .
Kommentar
Öppna Visual Studio Code manuellt och öppna mallkatalogen om Visual Studio Code inte redan är vid sökvägen.
Öppna den integrerade terminalen i Visual Studio Code genom att välja Terminal>Ny terminal i huvudmenyn. Skapa en PowerShell-session genom att köra följande kommando i terminalen:
pwsh
Du bör se utdata som liknar det här:
PowerShell 7.0.3 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help.
Kör
Import-Module
i terminalen.Kommentar
Innan du importerar modulen ska du ersätta path/to/arm-ttk/arm-ttk.psd1 med sökvägen till det nedladdade testverktyget.
Import-Module path/to/arm-ttk/arm-ttk.psd1
Dricks
Om du har laddat ned eller klonat verktyget till katalogen Nedladdningar ser sökvägen ut ungefär så här: /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1.
Nu kan du använda verktyget. Så länge som du är kvar i samma PowerShell-session behöver du inte köra importkommandot igen.
Kör
Test-AzTemplate
i terminalen:Test-AzTemplate -TemplatePath .
Dina utdata liknar följande. Observera att de markerade raderna visar testet:
Validating custom\azuredeploy.json JSONFiles Should Be Valid [+] JSONFiles Should Be Valid (56 ms) Pass : 1 Fail : 0 Total : 1 adminUsername Should Not Be A Literal [+] adminUsername Should Not Be A Literal (68 ms) apiVersions Should Be Recent In Reference Functions [+] apiVersions Should Be Recent In Reference Functions (203 ms) apiVersions Should Be Recent [+] apiVersions Should Be Recent (137 ms) artifacts parameter [+] artifacts parameter (145 ms) CommandToExecute Must Use ProtectedSettings For Secrets [+] CommandToExecute Must Use ProtectedSettings For Secrets (171 ms) deploymentTemplate [-] Custom ParameterNaming (354 ms) To be implemented DependsOn Best Practices [+] DependsOn Best Practices (152 ms) Deployment Resources Must Not Be Debug [+] Deployment Resources Must Not Be Debug (152 ms) DeploymentTemplate Must Not Contain Hardcoded Uri [+] DeploymentTemplate Must Not Contain Hardcoded Uri (185 ms) DeploymentTemplate Schema Is Correct [+] DeploymentTemplate Schema Is Correct (197 ms) Dynamic Variable References Should Not Use Concat [+] Dynamic Variable References Should Not Use Concat (157 ms) IDs Should Be Derived From ResourceIDs [+] IDs Should Be Derived From ResourceIDs (69 ms) Location Should Not Be Hardcoded [+] Location Should Not Be Hardcoded (260 ms) ManagedIdentityExtension must not be used [+] ManagedIdentityExtension must not be used (70 ms) Min And Max Value Are Numbers [+] Min And Max Value Are Numbers (213 ms) Outputs Must Not Contain Secrets [+] Outputs Must Not Contain Secrets (76 ms) Parameter Types Should Be Consistent [+] Parameter Types Should Be Consistent (68 ms) Parameters Must Be Referenced [+] Parameters Must Be Referenced (93 ms) Password params must be secure [+] Password params must be secure (111 ms) providers apiVersions Is Not Permitted [+] providers apiVersions Is Not Permitted (68 ms) ResourceIds should not contain [+] ResourceIds should not contain (210 ms) Resources Should Have Location [+] Resources Should Have Location (113 ms) Resources Should Not Be Ambiguous [+] Resources Should Not Be Ambiguous (147 ms) Secure Params In Nested Deployments [+] Secure Params In Nested Deployments (242 ms) Secure String Parameters Cannot Have Default [+] Secure String Parameters Cannot Have Default (129 ms) Template Should Not Contain Blanks [+] Template Should Not Contain Blanks (201 ms) URIs Should Be Properly Constructed [+] URIs Should Be Properly Constructed (180 ms) Variables Must Be Referenced [+] Variables Must Be Referenced (132 ms) Virtual Machines Should Not Be Preview [+] Virtual Machines Should Not Be Preview (91 ms) VM Images Should Use Latest Version [+] VM Images Should Use Latest Version (114 ms) VM Size Should Be A Parameter [+] VM Size Should Be A Parameter (130 ms) Pass : 31 Fail : 1 Total : 32
Nu när du har hittat testet låter du det här terminalfönstret vara öppet. Du kommer att använda det igen senare.
Omstrukturera det anpassade testet
Nu ska du ge det anpassade testet en lämplig implementering.
Gå tillbaka till det textredigeringsprogram som innehåller filen Custom-ParameterNaming.test.ps1.
Kommentar
Om du har stängt Visual Studio Code av misstag går du till underkatalogen arm-ttk/testcases/deploymentTemplate och öppnar Custom-ParameterNaming.test.ps1.
Ersätt innehållet i filen med följande kod:
<# .Synopsis Ensures that all parameters adheres to a naming standard .Description All parameters should start with the company specific prefix 'tailwind' #> param( # The Template Object [Parameter(Mandatory = $true, Position = 0)] [PSObject] $TemplateObject, # The Template JSON Text [Parameter(Mandatory = $true, Position = 0)] [PSObject] $TemplateText ) foreach ($parameter in $TemplateObject.parameters.psobject.properties) { # If the parameter name starts with tailwind, then the parameter is correctly named if ($parameter.Name -notmatch 'tailwind*') { Write-Error "Parameter '$($parameter.Name)' must start with prefix 'tailwind'" -TargetObject $parameter } }
Föregående kod itererar genom alla parametrar. Den inspekterar
name
attributet och kontrollerar om namnet börjar med prefixettailwind
. Om den inspekterade parametern inte matchar namngivningsregeln anropar koden cmdletenWrite-Error
med ett lämpligt felmeddelande.
Uppdatera mallfilen
Nu ska du lägga till en parameter i mallfilen.
Välj det textredigeringsprogram som innehåller filen azuredeploy.json och ändra filens innehåll till följande innehåll:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "metadata": { "description": "a deployment location" } } }, "resources": [] }
Föregående mallinnehåll definierar en parameter med namnet
location
som inte uppfyller namngivningsregeln eftersom den saknar prefixettailwind
.
Köra testverktyget igen
Nu har du skrivit ett anpassat test. Mallfilens namn uppfyller dock inte kravet. Du förväntar dig därför att den kommande testkörningen misslyckas. Se till att det blir så genom att vidta följande steg.
Kommentar
Använd det befintliga terminalfönstret i Visual Studio Code där du har startat PowerShell och importerat testverktyget.
I Visual Studio kör du Test-AzTemplate
från den integrerade terminalen:
Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Föregående kommando körs med parametern med namnet -Test
, som tar ett testnamn som indata. Du har angett Custom-ParameterNaming
som en parameter, vilket innebär att endast ditt nyutvecklade test kommer att köras.
Dricks
Det är bra att använda den här parametern när du utvecklar ett test eftersom det begränsar vad som körs samt mängden utdata i terminalen.
Kommandot ger följande utdata:
Validating custom\azuredeploy.json
deploymentTemplate
[-] Custom ParameterNaming (2ms)
Parameter 'location' must start with prefix 'tailwind'
Resultatet indikerar att testet fungerar. Se till att det blir så genom att ändra distributionsfilen.
Korrigera mallfilen
Nu bör du kontrollera att det anpassade testet fungerar genom att ändra mallfilen så att den följer reglerna i det anpassade testet.
I samma Visual Studio Code-instans som visar filen azuredeploy.json ändrar du filens innehåll till följande:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "tailwindLocation": { "type": "string", "metadata": { "description": "a deployment location" } } }, "resources": [] }
Parametern med namnet
location
har bytt namn tilltailwindLocation
. Den här parametern bör nu klara testet. Vi kontrollerar det.Fortsätt i samma Visual Studio Code-instans och kör
Test-AzTemplate
i terminalen:Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Nu ska utdata se ut så här:
Validating custom\azuredeploy.json deploymentTemplate [+] Custom ParameterNaming (2 ms)
Lyckades! Du har implementerat och kört ett anpassat test. Du har även korrigerat en distributionsmall som matchar testets villkor.
Skriva och köra ett anpassat test
Du kommer att skapa ett anpassat test och köra det med testverktyget. Du korrigerar även distributionsmallen för att testet ska lyckas. Det anpassade testet ska kontrollera att alla parametrar följer en namngivningsregel. Den här regeln är ett domänspecifikt krav i det produktteam där du jobbar.
Vi rekommenderar att du har två textredigeringsprogram öppna under den här övningen:
- Skriva ett anpassat test. Leta upp sökvägen till underkatalogen arm-ttk\testcases\deploymentTemplate\ i testverktygets installationskatalog. Härifrån kan du köra Visual Studio Code, där du kommer att skapa och redigera ett anpassat test.
- Skapa en mallfil och köra tester. Du väljer den plats som du vill använda för den här sökvägen. Vi rekommenderar att du startar en instans av Visual Studio Code från den här sökvägen så att du enkelt kan redigera filen azuredeploy.json när du uppmanas att göra det. Starta även en integrerad terminal i den här Visual Studio Code-instansen så att du enkelt kan köra tester.
Skapa mallfilen
Välj en katalog och skapa en fil med namnet azuredeploy.json.
Varning
Se till att katalogen är tom och att det inte finns några underkataloger.
Lägg till följande innehåll:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": []
}
Skapa det anpassade testet
Öppna en terminal.
Gå till installationskatalogen för testverktyget.
Placera dig själv i underkatalogen arm-ttk\testcases\deploymentTemplate.
Kör följande kommando:
code .
Kommentar
Öppna Visual Studio Code manuellt och öppna katalogen om Visual Studio Code inte redan är vid sökvägen.
Skapa en fil med namnet Custom-ParameterNaming.test.ps1 och ange följande innehåll i filen:
param( [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array [PSObject] $MainTemplateResources ) Write-Error "To be implemented"
Låt textredigeringsprogrammet vara öppet. Du kommer att redigera den här filen senare.
Köra det anpassade testet
Kör det anpassade testet med följande steg:
Öppna ett nytt terminalfönster eller använd det gamla.
Navigera till den katalog där du skapade azuredeploy.json.
Starta Visual Studio Code med följande kommando:
code .
Kommentar
Öppna Visual Studio Code manuellt och öppna mallkatalogen om Visual Studio Code inte redan är vid sökvägen.
Öppna den integrerade terminalen i Visual Studio Code. Öppna kommandopaletten genom att skriva PowerShell och välja Show integrated terminal (Visa integrerad terminal).
Kör följande kommando i terminalen:
Kommentar
Innan du importerar modulen ska du ersätta path\to\arm-ttk\arm-ttk.psd1 med sökvägen till det nedladdade testverktyget.
Import-Module path\to\arm-ttk\arm-ttk.psd1
Dricks
Om du har laddat ned eller klonat verktyget till katalogen Nedladdningar ser sökvägen ut ungefär så här: C:\Users\<user>\Downloads\arm-ttk\arm-ttk\arm-ttk.psd1.
Nu kan du använda verktyget. Så länge som du är kvar i samma PowerShell-session behöver du inte köra importkommandot igen.
Kör
Test-AzTemplate
i terminalen:Test-AzTemplate -TemplatePath .
Dina utdata liknar följande. Observera att de markerade raderna visar testet:
Validating custom\azuredeploy.json JSONFiles Should Be Valid [+] JSONFiles Should Be Valid (56 ms) Pass : 1 Fail : 0 Total : 1 adminUsername Should Not Be A Literal [+] adminUsername Should Not Be A Literal (68 ms) apiVersions Should Be Recent In Reference Functions [+] apiVersions Should Be Recent In Reference Functions (203 ms) apiVersions Should Be Recent [+] apiVersions Should Be Recent (137 ms) artifacts parameter [+] artifacts parameter (145 ms) CommandToExecute Must Use ProtectedSettings For Secrets [+] CommandToExecute Must Use ProtectedSettings For Secrets (171 ms) deploymentTemplate [-] Custom ParameterNaming (354 ms) To be implemented DependsOn Best Practices [+] DependsOn Best Practices (152 ms) Deployment Resources Must Not Be Debug [+] Deployment Resources Must Not Be Debug (152 ms) DeploymentTemplate Must Not Contain Hardcoded Uri [+] DeploymentTemplate Must Not Contain Hardcoded Uri (185 ms) DeploymentTemplate Schema Is Correct [+] DeploymentTemplate Schema Is Correct (197 ms) Dynamic Variable References Should Not Use Concat [+] Dynamic Variable References Should Not Use Concat (157 ms) IDs Should Be Derived From ResourceIDs [+] IDs Should Be Derived From ResourceIDs (69 ms) Location Should Not Be Hardcoded [+] Location Should Not Be Hardcoded (260 ms) ManagedIdentityExtension must not be used [+] ManagedIdentityExtension must not be used (70 ms) Min And Max Value Are Numbers [+] Min And Max Value Are Numbers (213 ms) Outputs Must Not Contain Secrets [+] Outputs Must Not Contain Secrets (76 ms) Parameter Types Should Be Consistent [+] Parameter Types Should Be Consistent (68 ms) Parameters Must Be Referenced [+] Parameters Must Be Referenced (93 ms) Password params must be secure [+] Password params must be secure (111 ms) providers apiVersions Is Not Permitted [+] providers apiVersions Is Not Permitted (68 ms) ResourceIds should not contain [+] ResourceIds should not contain (210 ms) Resources Should Have Location [+] Resources Should Have Location (113 ms) Resources Should Not Be Ambiguous [+] Resources Should Not Be Ambiguous (147 ms) Secure Params In Nested Deployments [+] Secure Params In Nested Deployments (242 ms) Secure String Parameters Cannot Have Default [+] Secure String Parameters Cannot Have Default (129 ms) Template Should Not Contain Blanks [+] Template Should Not Contain Blanks (201 ms) URIs Should Be Properly Constructed [+] URIs Should Be Properly Constructed (180 ms) Variables Must Be Referenced [+] Variables Must Be Referenced (132 ms) Virtual Machines Should Not Be Preview [+] Virtual Machines Should Not Be Preview (91 ms) VM Images Should Use Latest Version [+] VM Images Should Use Latest Version (114 ms) VM Size Should Be A Parameter [+] VM Size Should Be A Parameter (130 ms) Pass : 31 Fail : 1 Total : 32
Nu när du har hittat testet låter du det här terminalfönstret vara öppet. Du kommer att använda det igen senare.
Omstrukturera det anpassade testet
Nu ska du ge det anpassade testet en lämplig implementering.
Gå tillbaka till det textredigeringsprogram som innehåller filen Custom-ParameterNaming.test.ps1.
Kommentar
Om du stängde Visual Studio Code av misstag går du till underkatalogen testcases/deploymentTemplate och öppnar filen Custom-ParameterNaming.test.ps1.
Ersätt innehållet i filen med följande kod:
<# .Synopsis Ensures that all parameters adheres to a naming standard .Description All parameters should start with the company specific prefix 'tailwind' #> param( # The Template Object [Parameter(Mandatory = $true, Position = 0)] [PSObject] $TemplateObject, # The Template JSON Text [Parameter(Mandatory = $true, Position = 0)] [PSObject] $TemplateText ) foreach ($parameter in $TemplateObject.parameters.psobject.properties) { # If the parameter name starts with tailwind, then the parameter is correctly named if ($parameter.Name -notmatch 'tailwind*') { Write-Error "Parameter '$($parameter.Name)' must start with prefix 'tailwind'" -TargetObject $parameter } }
Föregående kod itererar genom alla parametrar. Den inspekterar
name
attributet och kontrollerar om namnet börjar med prefixettailwind
. Om den inspekterade parametern inte matchar namngivningsregeln anropar koden cmdletenWrite-Error
med ett lämpligt felmeddelande.
Uppdatera mallfilen
Nu ska du lägga till en parameter i mallfilen.
Välj det textredigeringsprogram som innehåller filen azuredeploy.json och ändra filens innehåll till följande innehåll:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "location": { "type": "string", "metadata": { "description": "a deployment location" } } }, "resources": [] }
Föregående mallinnehåll definierar en parameter med namnet
location
som inte uppfyller namngivningsregeln eftersom den saknar prefixettailwind
.
Köra testverktyget igen
Nu har du skrivit ett anpassat test. Mallfilens namn uppfyller dock inte kravet. Du förväntar dig därför att den kommande testkörningen misslyckas. Se till att det blir så genom att vidta följande steg.
Använd det befintliga terminalfönstret i Visual Studio Code där du har startat PowerShell och importerat testverktyget.
I Visual Studio kör du Test-AzTemplate
från den integrerade terminalen:
Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Föregående kommando körs med parametern -Test
, som tar ett testnamn som indata. Du har angett Custom-ParameterNaming
som en parameter, vilket innebär att endast ditt nyutvecklade test kommer att köras.
Dricks
Det är bra att använda den här parametern när du utvecklar ett test eftersom det begränsar vad som körs samt mängden utdata i terminalen.
Kommandot ger följande utdata:
Validating custom\azuredeploy.json
deploymentTemplate
[-] Custom ParameterNaming (2ms)
Parameter 'location' must start with prefix 'tailwind'
Resultatet indikerar att testet fungerar. Se till att det blir så genom att ändra distributionsfilen.
Korrigera mallfilen
Nu bör du kontrollera att det anpassade testet fungerar genom att ändra mallfilen så att den följer reglerna i det anpassade testet.
I samma Visual Studio Code-instans som visar filen azuredeploy.json ändrar du filens innehåll till följande:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "tailwindLocation": { "type": "string", "metadata": { "description": "a deployment location" } } }, "resources": [] }
Parametern med namnet
location
har bytt namn tilltailwindLocation
. Den här parametern bör nu klara testet. Vi kontrollerar det.Fortsätt i samma Visual Studio Code-instans och kör
Test-AzTemplate
i terminalen:Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Nu ska utdata se ut så här:
Validating custom\azuredeploy.json Custom ParameterNaming [+] Custom ParameterNaming (9 ms)
Lyckades! Du har implementerat och kört ett anpassat test. Du har även korrigerat en distributionsmall som matchar testets villkor.