Oefening: aangepaste tests ontwerpen en uitvoeren met de test-toolkit

Voltooid

Als lid van een productteam weet u dat het belangrijk is dat u een of meer team- of domeinspecifieke regels kunt implementeren. Een manier om dit te doen is door de regels als tests te implementeren. U kunt deze tests vervolgens uitvoeren met de test-toolkit.

Een aangepaste test ontwerpen en uitvoeren

U gaat een aangepaste test ontwikkelen en de test-toolkit gebruiken om deze uit te voeren. U moet ook de implementatiesjabloon corrigeren om ervoor te zorgen dat de test wordt voltooid. Bij de aangepaste test wordt gecontroleerd of alle parameters voldoen aan een naamgevingsregel. Deze regel is een domeinspecifieke vereiste voor het product waaraan u en uw team werken.

Het is raadzaam om voor deze oefening twee teksteditors te openen:

  • Een aangepaste test maken. Zoek het pad naar de submap arm-ttk/testcases/deploymentTemplate/ van de installatiemap van de test-toolkit. Voer hier Visual Studio Code uit, waarin u een aangepaste test gaat maken en bewerken.
  • Een sjabloonbestand maken en tests uitvoeren. Selecteer de gewenste locatie voor dit pad. Het is raadzaam om een exemplaar van Visual Studio Code te starten vanuit dit pad, zodat u het bestand azuredeploy.json eenvoudig kunt bewerken wanneer hierom wordt gevraagd. Start een geïntegreerde terminal met dit Visual Studio Code-exemplaar om eenvoudig tests uit te voeren.

Het sjabloonbestand maken

Selecteer een map en maak een bestand met de naam azuredeploy.json.

Waarschuwing

Controleer of de geselecteerde map leeg is en geen onderliggende mappen heeft.

Voeg de volgende inhoud toe:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "resources": []
}

De aangepaste test maken

  1. Open Visual Studio Code en ga naar uw installatiemap voor de test-toolkit. Ga naar de submap arm-ttk/testcases/deploymentTemplate. Voer de volgende opdracht uit:

    code .
    

    Notitie

    Open Visual Studio Code handmatig en open de map als Visual Studio Code zich niet op het pad bevindt.

  2. Maak een aangepast testbestand met de naam Custom-ParameterNaming.test.ps1. Geef het bestand de volgende inhoud:

    param(
    [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array
    [PSObject]
    $MainTemplateResources
    )
    
    Write-Error "To be implemented"
    

    Laat de teksteditor openstaan. U gaat dit bestand later bewerken.

De aangepaste test uitvoeren

Voer de aangepaste test uit door de volgende stappen uit te voeren:

  1. Open een nieuw terminalvenster of gebruik het oude opnieuw.

  2. Ga naar de map waarin u azuredeploy.json hebt gemaakt. Voer de volgende opdracht uit om Visual Studio Code te starten:

    code .
    

    Notitie

    Open Visual Studio Code handmatig en open de sjabloonmap als Visual Studio Code zich niet op het pad bevindt.

  3. Open de geïntegreerde terminal vanuit Visual Studio Code door in het hoofdmenu Terminal>Nieuwe terminal te selecteren. Voer in de terminal de volgende opdracht uit om een PowerShell-shell te starten:

    pwsh
    

    De uitvoer hoort er ongeveer als volgt uit te zien:

    PowerShell 7.0.3
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    https://aka.ms/powershell
    Type 'help' to get help.
    
  4. Voer Import-Module uit in de terminal.

    Notitie

    Voordat u de module importeert, vervangt u path/to/arm-ttk/arm-ttk.psd1 door het pad naar de gedownloade test-toolkit.

    Import-Module path/to/arm-ttk/arm-ttk.psd1
    

    Tip

    Als u het hulpprogramma naar de map Downloads hebt gedownload of gekloond, ziet het pad er ongeveer als volgt uit: /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1.

    U bent nu klaar om het hulpprogramma te gebruiken. Zolang u zich in dezelfde PowerShell-sessie bevindt, hoeft u de importopdracht niet opnieuw uit te voeren.

  5. Voer Test-AzTemplate uit in de terminal om een testuitvoering te starten:

    Test-AzTemplate -TemplatePath .
    

    De uitvoer ziet er ongeveer als volgt uit. U ziet dat de gemarkeerde regels uw test laten zien:

    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 u de test hebt gevonden, laat u dit terminalvenster openstaan. U gebruikt het later weer.

De aangepaste test herstructureren

U geeft nu de aangepaste test een juiste implementatie.

  1. Ga terug naar de teksteditor met het bestand Custom-ParameterNaming.test.ps1.

    Notitie

    Als u Visual Studio Code per ongeluk hebt gesloten, gaat u naar de submap arm-ttk/testcases/deploymentTemplate en opent u Custom-ParameterNaming.test.ps1.

  2. Vervang de inhoud van het bestand door de volgende code:

    <#
    .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
      }
    }
    

    De voorgaande code wordt in alle parameters herhaalt. Het controleert het name kenmerk en controleert of de naam begint met het voorvoegsel tailwind. Als de geïnspecteerde parameter niet overeenkomt met de naamgevingsregel, roept de code vervolgens de Write-Error cmdlet aan met een geschikt foutbericht.

Het sjabloonbestand bijwerken

U gaat nu een parameter toevoegen aan het sjabloonbestand.

  1. Selecteer de teksteditor met azuredeploy.json en wijzig de inhoud van het bestand in de volgende inhoud:

    {
      "$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": []
    }
    

    De voorgaande sjablooninhoud definieert een parameter met de naamgevingsregel location die niet voldoet aan de naamgevingsregel, omdat het voorvoegsel ontbreekt tailwind .

De test-toolkit opnieuw uitvoeren

U hebt nu een aangepaste test geschreven. De naam van uw sjabloonbestand voldoet echter niet aan de vereiste. Daarom zou de aanstaande testuitvoering moeten mislukken. Volg de onderstaande stap om te controleren of dit het geval is.

Gebruik het bestaande venster met de geïntegreerde Visual Studio Code-terminal waarin PowerShell is gestart en waarin de test-toolkit is geïmporteerd.

Voer in Visual Studio Code Test-AzTemplate uit vanuit de geïntegreerde terminal:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

De voorgaande opdracht wordt uitgevoerd met de parameter -Test, waarbij een testnaam als invoer wordt gebruikt. U hebt opgegeven Custom-ParameterNaming als parameter, wat betekent dat alleen uw zojuist ontwikkelde test wordt uitgevoerd.

Tip

Het gebruik van de -Test parameter is een goede gewoonte wanneer u een test ontwikkelt, omdat hiermee wordt beperkt wat er wordt uitgevoerd en de grootte van de terminaluitvoer.

Deze opdracht leidt tot de volgende uitvoer:

Validating custom\azuredeploy.json
 deploymentTemplate
   [-] Custom ParameterNaming (2ms)
       Parameter 'location' must start with prefix 'tailwind'

Het resultaat geeft aan dat uw test werkt. Laten we controleren of dit het geval is door het implementatiebestand te wijzigen.

Het sjabloonbestand corrigeren

U gaat nu de juistheid van uw aangepaste test verifiëren door het sjabloonbestand te wijzigen om te voldoen aan de regels van de aangepaste test.

  1. Wijzig de inhoud van het bestand naar de volgende inhoud in hetzelfde Visual Studio Code-exemplaar met het bestand azuredeploy.json:

    {
      "$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": []
    }
    

    De naam van de parameter location is gewijzigd in tailwindLocation. In theorie moet deze parameter de test nu goed doorlopen. Laten we dit controleren.

  2. Ga door in hetzelfde Visual Studio Code-exemplaar en voer Test-AzTemplate uit in de geïntegreerde terminal:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    De uitvoer ziet er nu als volgt uit:

    Validating custom\azuredeploy.json
      deploymentTemplate
        [+] Custom ParameterNaming (2 ms)
    

Gelukt! U heeft een aangepaste test geïmplementeerd en uitgevoerd. U hebt ook een implementatiesjabloon gecorrigeerd aan de hand van de teststatus.

Een aangepaste test ontwerpen en uitvoeren

U gaat een aangepaste test ontwikkelen en de test-toolkit gebruiken om deze uit te voeren. U moet ook de implementatiesjabloon corrigeren om ervoor te zorgen dat de test wordt voltooid. Bij de aangepaste test wordt gecontroleerd of alle parameters voldoen aan een naamgevingsregel. Deze regel is een domeinspecifieke vereiste voor het product waaraan u en uw team werken.

Het is raadzaam om voor deze oefening twee teksteditors te openen:

  • Een aangepaste test maken. Zoek het pad naar de submap arm-ttk/testcases/deploymentTemplate/ van de installatiemap van de test-toolkit. Voer hier Visual Studio Code uit, waarin u een aangepaste test gaat maken en bewerken.
  • Een sjabloonbestand maken en tests uitvoeren. Selecteer de gewenste locatie voor dit pad. Het is raadzaam om een exemplaar van Visual Studio Code te starten vanuit dit pad, zodat u het bestand azuredeploy.json eenvoudig kunt bewerken wanneer hierom wordt gevraagd. Start een geïntegreerde terminal met dit Visual Studio Code-exemplaar om eenvoudig tests uit te voeren.

Het sjabloonbestand maken

Selecteer een map en maak een bestand met de naam azuredeploy.json.

Waarschuwing

Controleer of de geselecteerde map leeg is en geen onderliggende mappen heeft.

Voeg de volgende inhoud toe:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "resources": []
}

De aangepaste test maken

  1. Open een terminal. Ga naar de installatiemap voor de test-toolkit. Ga naar de submap arm-ttk/testcases/deploymentTemplate. Voer de volgende opdracht uit:

    code .
    

    Notitie

    Open Visual Studio Code handmatig en open de map als Visual Studio Code zich niet op het pad bevindt.

  2. Maak een aangepast bestand met de naam Custom-ParameterNaming.test.ps1. Geef het bestand de volgende inhoud:

    param(
    [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array
    [PSObject]
    $MainTemplateResources
    )
    
    Write-Error "To be implemented"
    

    Laat de teksteditor openstaan. U gaat dit bestand later bewerken.

De aangepaste test uitvoeren

Voer de aangepaste test uit door de volgende stappen uit te voeren:

  1. Open een nieuw terminalvenster of gebruik het oude opnieuw.

  2. Ga naar de map waarin u azuredeploy.json hebt gemaakt. Voer de volgende opdracht uit om Visual Studio Code te starten:

    code .
    

    Notitie

    Open Visual Studio Code handmatig en open de sjabloonmap als Visual Studio Code zich niet op het pad bevindt.

  3. Open de geïntegreerde terminal vanuit Visual Studio Code door in het hoofdmenu Terminal>Nieuwe terminal te selecteren. Voer in de terminal de volgende opdracht uit om een PowerShell-shell te starten:

    pwsh
    

    De uitvoer hoort er ongeveer als volgt uit te zien:

    PowerShell 7.0.3
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    https://aka.ms/powershell
    Type 'help' to get help.
    
  4. Voer Import-Module uit in de terminal.

    Notitie

    Voordat u de module importeert, vervangt u path/to/arm-ttk/arm-ttk.psd1 door het pad naar de gedownloade test-toolkit.

    Import-Module path/to/arm-ttk/arm-ttk.psd1
    

    Tip

    Als u het hulpprogramma naar de map Downloads hebt gedownload of gekloond, ziet het pad er ongeveer als volgt uit: /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1.

    U bent nu klaar om het hulpprogramma te gebruiken. Zolang u zich in dezelfde PowerShell-sessie bevindt, hoeft u de importopdracht niet opnieuw uit te voeren.

  5. Voer Test-AzTemplate uit in de terminal:

    Test-AzTemplate -TemplatePath .
    

    De uitvoer ziet er ongeveer als volgt uit. U ziet dat de gemarkeerde regels uw test laten zien:

    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 u de test hebt gevonden, laat u dit terminalvenster openstaan. U gebruikt het later weer.

De aangepaste test herstructureren

U geeft nu de aangepaste test een juiste implementatie.

  1. Ga terug naar de teksteditor met het bestand Custom-ParameterNaming.test.ps1.

    Notitie

    Als u Visual Studio Code per ongeluk hebt gesloten, gaat u naar de submap arm-ttk/testcases/deploymentTemplate en opent u Custom-ParameterNaming.test.ps1.

  2. Vervang de inhoud van het bestand door de volgende code:

    <#
    .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
      }
    }
    

    De voorgaande code wordt in alle parameters herhaalt. Het controleert het name kenmerk en controleert of de naam begint met het voorvoegsel tailwind. Als de geïnspecteerde parameter niet overeenkomt met de naamgevingsregel, roept de code vervolgens de Write-Error cmdlet aan met een geschikt foutbericht.

Het sjabloonbestand bijwerken

U gaat nu een parameter toevoegen aan het sjabloonbestand.

  1. Selecteer de teksteditor met azuredeploy.json en wijzig de inhoud van het bestand in de volgende inhoud:

    {
      "$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": []
    }
    

    De voorgaande sjablooninhoud definieert een parameter met de naamgevingsregel location die niet voldoet aan de naamgevingsregel, omdat het voorvoegsel ontbreekt tailwind .

De test-toolkit opnieuw uitvoeren

U hebt nu een aangepaste test geschreven. De naam van uw sjabloonbestand voldoet echter niet aan de vereiste. Daarom zou de aanstaande testuitvoering moeten mislukken. Volg de onderstaande stap om te controleren of dit het geval is.

Notitie

Gebruik het bestaande venster met de geïntegreerde Visual Studio Code-terminal waarin PowerShell is gestart en waarin de test-toolkit is geïmporteerd.

Voer in Visual Studio Code Test-AzTemplate uit vanuit de geïntegreerde terminal:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

De voorgaande opdracht wordt uitgevoerd met de parameter met de naam -Test, die een testnaam als invoer gebruikt. U hebt opgegeven Custom-ParameterNaming als parameter, wat betekent dat alleen uw zojuist ontwikkelde test wordt uitgevoerd.

Tip

Het gebruik van deze parameter is nuttig bij het ontwikkelen van een test omdat hiermee wordt beperkt wat wordt uitgevoerd en wat de grootte van de terminaluitvoer wordt.

Deze opdracht leidt tot de volgende uitvoer:

Validating custom\azuredeploy.json
 deploymentTemplate
   [-] Custom ParameterNaming (2ms)
       Parameter 'location' must start with prefix 'tailwind'

Het resultaat geeft aan dat uw test werkt. Laten we controleren of dit het geval is door het implementatiebestand te wijzigen.

Het sjabloonbestand corrigeren

U gaat nu de juistheid van uw aangepaste test verifiëren door het sjabloonbestand te wijzigen om te voldoen aan de regels van de aangepaste test.

  1. Wijzig de inhoud van het bestand naar de volgende inhoud in hetzelfde Visual Studio Code-exemplaar met het bestand azuredeploy.json:

    {
      "$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": []
    }
    

    De naam van de parameter location is gewijzigd in tailwindLocation. In theorie moet deze parameter de test nu goed doorlopen. Laten we dit controleren.

  2. Ga door in hetzelfde Visual Studio Code-exemplaar en voer Test-AzTemplate uit in de geïntegreerde terminal:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    De uitvoer ziet er nu als volgt uit:

    Validating custom\azuredeploy.json
      deploymentTemplate
        [+] Custom ParameterNaming (2 ms)
    

Gelukt! U heeft een aangepaste test geïmplementeerd en uitgevoerd. U hebt ook een implementatiesjabloon gecorrigeerd aan de hand van de teststatus.

Een aangepaste test ontwerpen en uitvoeren

U gaat een aangepaste test ontwikkelen en de test-toolkit gebruiken om deze uit te voeren. U moet ook de implementatiesjabloon corrigeren om ervoor te zorgen dat de test wordt voltooid. Bij de aangepaste test wordt gecontroleerd of alle parameters voldoen aan een naamgevingsregel. Deze regel is een domeinspecifieke vereiste voor het product waaraan u en uw team werken.

Het is raadzaam om voor deze oefening twee teksteditors te openen:

  • Een aangepaste test maken. Zoek het pad van de submap arm-ttk\testcases\deploymentTemplate\ van de installatiemap van de test-toolkit. Voer hier Visual Studio Code uit, waarin u een aangepaste test gaat maken en bewerken.
  • Een sjabloonbestand maken en tests uitvoeren. Selecteer de gewenste locatie voor dit pad. Het is raadzaam om een exemplaar van Visual Studio Code te starten vanuit dit pad, zodat u het bestand azuredeploy.json eenvoudig kunt bewerken wanneer hierom wordt gevraagd. Start een geïntegreerde terminal met dit Visual Studio Code-exemplaar om eenvoudig tests uit te voeren.

Het sjabloonbestand maken

Selecteer een map en maak een bestand met de naam azuredeploy.json.

Waarschuwing

Controleer of de geselecteerde map leeg is en geen onderliggende mappen heeft.

Voeg de volgende inhoud toe:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {},
  "resources": []
}

De aangepaste test maken

  1. Open een terminal.

  2. Ga naar de installatiemap voor de test-toolkit.

  3. Plaats uzelf in de submap arm-ttk\testcases\deploymentTemplate.

  4. Voer de volgende opdracht uit:

    code .
    

    Notitie

    Open Visual Studio Code handmatig en open de map als Visual Studio Code zich niet op het pad bevindt.

  5. Maak een bestand met de naam Custom-ParameterNaming.test.ps1 en geef het bestand de volgende inhoud:

    param(
    [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array
    [PSObject]
    $MainTemplateResources
    )
    
    Write-Error "To be implemented"
    

    Laat de teksteditor openstaan. U gaat dit bestand later bewerken.

De aangepaste test uitvoeren

Voer de aangepaste test uit door de volgende stappen uit te voeren:

  1. Open een nieuw terminalvenster of gebruik het oude opnieuw.

  2. Ga naar de map waarin u azuredeploy.json hebt gemaakt.

  3. Voer de volgende opdracht uit om Visual Studio Code te starten:

    code .
    

    Notitie

    Open Visual Studio Code handmatig en open de sjabloonmap als Visual Studio Code zich niet op het pad bevindt.

  4. Open in Visual Studio Code de geïntegreerde terminal. Open het opdrachtenpalet, typ PowerShell in en selecteer Geïntegreerde terminal weergeven.

  5. Voer in de terminal de volgende opdracht uit:

    Notitie

    Voordat u de module importeert, vervangt u path\to\arm-ttk\arm-ttk.psd1 door het pad naar de gedownloade test-toolkit.

    Import-Module path\to\arm-ttk\arm-ttk.psd1
    

    Tip

    Als u het hulpprogramma naar de map Downloads hebt gedownload of gekloond, ziet het pad er ongeveer als volgt uit: C:\Users\user<\>Downloads\arm-ttk\arm-ttk\arm-ttk.psd1.

    U bent nu klaar om het hulpprogramma te gebruiken. Zolang u zich in dezelfde PowerShell-sessie bevindt, hoeft u de importopdracht niet opnieuw uit te voeren.

  6. Voer Test-AzTemplate uit in de terminal:

    Test-AzTemplate -TemplatePath .
    

    De uitvoer ziet er ongeveer als volgt uit. U ziet dat de gemarkeerde regels uw test laten zien:

    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 u de test hebt gevonden, laat u dit terminalvenster openstaan. U gebruikt het later weer.

De aangepaste test herstructureren

U geeft nu de aangepaste test een juiste implementatie.

  1. Ga terug naar de teksteditor met het bestand Custom-ParameterNaming.test.ps1.

    Notitie

    Als u Visual Studio Code per ongeluk hebt gesloten, gaat u naar de submap testcases/deploymentTemplate en opent u het bestand Custom-ParameterNaming.test.ps1.

  2. Vervang de inhoud van het bestand door de volgende code:

    <#
    .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
      }
    }
    

    De voorgaande code wordt in alle parameters herhaalt. Het controleert het name kenmerk en controleert of de naam begint met het voorvoegsel tailwind. Als de geïnspecteerde parameter niet overeenkomt met de naamgevingsregel, roept de code vervolgens de Write-Error cmdlet aan met een geschikt foutbericht.

Het sjabloonbestand bijwerken

U gaat nu een parameter toevoegen aan het sjabloonbestand.

  1. Selecteer de teksteditor met azuredeploy.json en wijzig de inhoud van het bestand in de volgende inhoud:

    {
      "$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": []
    }
    

    De voorgaande sjablooninhoud definieert een parameter met de naamgevingsregel location die niet voldoet aan de naamgevingsregel, omdat het voorvoegsel ontbreekt tailwind .

De test-toolkit opnieuw uitvoeren

U hebt nu een aangepaste test geschreven. De naam van uw sjabloonbestand voldoet echter niet aan de vereiste. Daarom zou de aanstaande testuitvoering moeten mislukken. Volg de onderstaande stap om te controleren of dit het geval is.

Gebruik het bestaande venster met de geïntegreerde Visual Studio Code-terminal waarin PowerShell is gestart en waarin de test-toolkit is geïmporteerd.

Voer in Visual Studio Code Test-AzTemplate uit vanuit de geïntegreerde terminal:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

De voorgaande opdracht wordt uitgevoerd met de parameter -Test, waarbij een testnaam als invoer wordt gebruikt. U hebt opgegeven Custom-ParameterNaming als parameter, wat betekent dat alleen uw zojuist ontwikkelde test wordt uitgevoerd.

Tip

Het gebruik van deze parameter is nuttig bij het ontwikkelen van een test omdat hiermee wordt beperkt wat wordt uitgevoerd en wat de grootte van de terminaluitvoer wordt.

Deze opdracht leidt tot de volgende uitvoer:

Validating custom\azuredeploy.json
 deploymentTemplate
   [-] Custom ParameterNaming (2ms)
       Parameter 'location' must start with prefix 'tailwind'

Het resultaat geeft aan dat uw test werkt. Laten we controleren of dit het geval is door het implementatiebestand te wijzigen.

Het sjabloonbestand corrigeren

U gaat nu de juistheid van uw aangepaste test verifiëren door het sjabloonbestand te wijzigen om te voldoen aan de regels van de aangepaste test.

  1. Wijzig de inhoud van het bestand naar de volgende inhoud in hetzelfde Visual Studio Code-exemplaar met het bestand azuredeploy.json:

    {
      "$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": []
    }
    

    De naam van de parameter location is gewijzigd in tailwindLocation. In theorie moet deze parameter de test nu goed doorlopen. Laten we dit controleren.

  2. Ga door in hetzelfde Visual Studio Code-exemplaar en voer Test-AzTemplate uit in de geïntegreerde terminal:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    De uitvoer ziet er nu als volgt uit:

    Validating custom\azuredeploy.json
      Custom ParameterNaming
        [+] Custom ParameterNaming (9 ms)
    

Gelukt! U heeft een aangepaste test geïmplementeerd en uitgevoerd. U hebt ook een implementatiesjabloon gecorrigeerd aan de hand van de teststatus.