Gyakorlat – Egyéni tesztek írása és futtatása a tesztelési eszközkészlettel

Befejeződött

Egy termékcsapat tagjaként jól tudja, mennyire fontos, hogy implementálni tudjon csapat- vagy tartományspecifikus szabályokat. Ennek egy módja, hogy a szabályokat tesztekként implementálja. Ezeket a teszteket aztán a tesztelési eszközkészlet használatával futtathatja.

Egyéni teszt megírása és futtatása

Egyéni tesztet fog írni, majd a tesztelési eszközkészlet használatával futtatni. Az üzembe helyezési sablont is kijavítja, hogy az megfeleljen a teszten. Az egyéni teszt célja annak ellenőrzése lesz, hogy az összes paraméter követ-e egy elnevezési szabályt. Ez a szabály arra a termékre vonatkozó tartományspecifikus követelmény, amelyen a csapata dolgozik.

A gyakorlathoz ajánlott két szövegszerkesztőt megnyitni:

  • Egyéni teszt írása. Lépjen a tesztelési eszközkészlet telepítési könyvtárának arm-ttk/testcases/deploymentTemplate/ alkönyvtárára. Innen fogja futtatni a Visual Studio Code-ot, ahol egy egyéni tesztet hoz létre és szerkeszt.
  • Sablonfájl megírása és tesztek futtatása. Válasszon ki egy tetszőleges helyet elérési útként. Javasolt erről az elérési útról elindítani a Visual Studio Code egy példányát, hogy amikor szükséges, egyszerűen szerkeszthesse az azuredeploy.json fájlt. Indítson el egy integrált terminált ebben a Visual Studio Code-példányban, hogy egyszerűen futtathasson teszteket.

A sablonfájl létrehozása

Válasszon egy tetszőleges könyvtárt, és hozzon létre egy azuredeploy.json fájlt.

Figyelmeztetés

Ügyeljen rá, hogy a választott könyvtár üres legyen, alkönyvtárak nélkül.

A fájl tartalma legyen a következő:

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

Az egyéni teszt létrehozása

  1. Nyissa meg a Visual Studio Code-ot, és lépjen a tesztelési eszközkészlet telepítési könyvtárára. Lépjen be az arm-ttk/testcases/deploymentTemplate alkönyvtárba. Futtassa az alábbi parancsot:

    code .
    

    Megjegyzés:

    Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a könyvtárt.

  2. Hozzon létre egy Custom-ParameterNaming.test.ps1 nevű egyéni tesztfájlt. A fájl tartalma legyen a következő:

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

    Hagyja megnyitva a szövegszerkesztőt. Ezt a fájlt később még szerkeszteni fogja.

Az egyéni teszt futtatása

Futtassa az egyéni tesztet az alábbi lépések végrehajtásával:

  1. Nyisson meg egy új terminálablakot, vagy használja újra az előzőt.

  2. Lépjen arra a könyvtárra, ahol létrehozta az azuredeploy.json fájlt. Futtassa az alábbi parancsot a Visual Studio Code elindításához:

    code .
    

    Megjegyzés:

    Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a sablonkönyvtárt.

  3. Nyissa meg az integrált terminált a Visual Studio Code felső menüjének Terminál>Új terminál menüpontjával. A terminálban kiadott alábbi paranccsal indítson el egy PowerShell-rendszerhéjat:

    pwsh
    

    A következőhöz hasonló kimenet jelenik meg:

    PowerShell 7.0.3
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    https://aka.ms/powershell
    Type 'help' to get help.
    
  4. Futtassa az Import-Module parancsot a terminálban.

    Megjegyzés:

    A modul importálása előtt a path/to/arm-ttk/arm-ttk.psd1 útvonal helyére írja be a letöltött tesztelési eszközkészlet elérési útját.

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

    Tipp.

    Ha letöltötte vagy klónozta az eszközt a Letöltések könyvtárba, az elérési út a következőhöz hasonló lesz: /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1.

    Most már készen áll az eszköz használatára. Amíg ebben a PowerShell-munkamenetben marad, nem kell újra futtatnia az importálási parancsot.

  5. Adja ki a Test-AzTemplate parancsot a terminálban egy tesztfuttatás elindításához:

    Test-AzTemplate -TemplatePath .
    

    A kimenet a következőhöz hasonló. Figyelje meg, hogy a kiemelt vonalak a tesztet mutatják:

    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
    

    Miután megtalálta a tesztet, hagyja megnyitva ezt a terminálablakot. Később még használni fogja.

Az egyéni teszt újrabontása

Most az egyéni teszt helyes megvalósítása következik.

  1. Térjen vissza a Custom-ParameterNaming.test.ps1 fájlt tartalmazó szövegszerkesztőhöz.

    Megjegyzés:

    Ha véletlenül bezárta a Visual Studio Code-ot, lépjen az arm-ttk/testcases/deploymentTemplate alkönyvtárra, és nyissa meg a Custom-ParameterNaming.test.ps1 fájlt.

  2. Cserélje le a fájl tartalmát a következő kódra:

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

    A fenti kód végiglépked az összes paraméteren. Megvizsgálja az name attribútumot, és ellenőrzi, hogy a név az előtaggal tailwindkezdődik-e. Ha a vizsgált paraméter nem felel meg az elnevezési szabálynak, a kód ezután egy megfelelő hibaüzenettel hívja meg a Write-Error parancsmagot.

A sablonfájl módosítása

Most egy paramétert fog felvenni a sablonfájlba.

  1. Az azuredeploy.json fájlt tartalmazó szövegszerkesztőben módosítsa a fájlt tartalmát az alábbira:

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

    Az előző sablontartalmak olyan paramétert location határoznak meg, amely nem felel meg az elnevezési szabálynak, mert hiányzik belőle az tailwind előtag.

A tesztelési eszközkészlet újrafuttatása

Ezen a ponton már van egy megírt egyéni tesztje. A sablonfájl elnevezései azonban nem tesznek eleget a követelménynek. Emiatt a következő tesztfuttatás várhatóan sikertelen lesz. Győződjön meg erről a következő lépés végrehajtásával.

Használja a már megnyitott Visual Studio Code-beli integrált terminálablakot, amelyben elindította a PowerShellt, és importálta a tesztelési eszközkészletet.

A Visual Studio Code-ban futtassa a Test-AzTemplate parancsot az integrált terminálból:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

Az előző parancs a paraméterrel -Testfut, amely bemenetként egy tesztnevet vesz fel. Paraméterként adta meg Custom-ParameterNaming , ami azt jelenti, hogy csak az újonnan kifejlesztett teszt lesz futtatva.

Tipp.

-Test A paraméter használata jó gyakorlat egy teszt fejlesztésekor, mert korlátozza a futtatás eredményét és a terminálkimenet méretét.

Ennek a parancsnak az alábbi kimenet az eredménye:

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

Az eredmény azt jelzi, hogy a teszt működik. Ellenőrizzük ezt az üzembe helyezési fájl módosításával.

A sablonfájl kijavítása

Elérkezett arra a pontra, amikor az egyéni teszt helyességének ellenőrzéséhez úgy módosítja a sablonfájlt, hogy az megfeleljen az egyéni teszt által előírt szabályoknak.

  1. Abban az Visual Studio Code-példányban, amelyben az azuredeploy-json fájl látható, módosítsa az alábbira a fájl tartalmát:

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

    A névvel ellátott location paraméter átnevezve a következőre tailwindLocation: . Ennek a paraméternek elméletileg át kell mennie a teszten. Járjunk utána.

  2. Továbbra is ebben a Visual Studio Code-példányban maradva futtassa a Test-AzTemplate parancsot az integrált terminálban:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    A kimenet most az alábbihoz hasonló:

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

Sikerült! Implementált és lefuttatott egy egyéni tesztet. Ki is javította az üzembe helyezési sablont, hogy az megfeleljen a teszt feltételének.

Egyéni teszt megírása és futtatása

Egyéni tesztet fog írni, majd a tesztelési eszközkészlet használatával futtatni. Az üzembe helyezési sablont is kijavítja, hogy az megfeleljen a teszten. Az egyéni teszt célja annak ellenőrzése lesz, hogy az összes paraméter követ-e egy elnevezési szabályt. Ez a szabály arra a termékre vonatkozó tartományspecifikus követelmény, amelyen a csapata dolgozik.

A gyakorlathoz ajánlott két szövegszerkesztőt megnyitni:

  • Egyéni teszt írása. Lépjen a tesztelési eszközkészlet telepítési könyvtárának arm-ttk/testcases/deploymentTemplate/ alkönyvtárára. Innen fogja futtatni a Visual Studio Code-ot, ahol egy egyéni tesztet hoz létre és szerkeszt.
  • Sablonfájl megírása és tesztek futtatása. Válasszon ki egy tetszőleges helyet elérési útként. Javasolt erről az elérési útról elindítani a Visual Studio Code egy példányát, hogy amikor szükséges, egyszerűen szerkeszthesse az azuredeploy.json fájlt. Indítson el egy integrált terminált ebben a Visual Studio Code-példányban, hogy egyszerűen futtathasson teszteket.

A sablonfájl létrehozása

Válasszon egy tetszőleges könyvtárt, és hozzon létre egy azuredeploy.json fájlt.

Figyelmeztetés

Ügyeljen rá, hogy a választott könyvtár üres legyen, alkönyvtárak nélkül.

A fájl tartalma legyen a következő:

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

Az egyéni teszt létrehozása

  1. Nyisson meg egy terminált. Lépjen a tesztelési eszközkészlet telepítési könyvtárára. Lépjen be az arm-ttk/testcases/deploymentTemplate alkönyvtárba. Futtassa az alábbi parancsot:

    code .
    

    Megjegyzés:

    Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a könyvtárt.

  2. Hozzon létre egy Custom-ParameterNaming.test.ps1 nevű egyéni fájlt. A fájl tartalma legyen a következő:

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

    Hagyja megnyitva a szövegszerkesztőt. Ezt a fájlt később még szerkeszteni fogja.

Az egyéni teszt futtatása

Futtassa az egyéni tesztet az alábbi lépések végrehajtásával:

  1. Nyisson meg egy új terminálablakot, vagy használja újra az előzőt.

  2. Lépjen arra a könyvtárra, ahol létrehozta az azuredeploy.json fájlt. Futtassa az alábbi parancsot a Visual Studio Code elindításához:

    code .
    

    Megjegyzés:

    Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a sablonkönyvtárt.

  3. Nyissa meg az integrált terminált a Visual Studio Code felső menüjének Terminál>Új terminál menüpontjával. A terminálban kiadott alábbi paranccsal indítson el egy PowerShell-rendszerhéjat:

    pwsh
    

    A következőhöz hasonló kimenet jelenik meg:

    PowerShell 7.0.3
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    https://aka.ms/powershell
    Type 'help' to get help.
    
  4. Futtassa az Import-Module parancsot a terminálban.

    Megjegyzés:

    A modul importálása előtt a path/to/arm-ttk/arm-ttk.psd1 útvonal helyére írja be a letöltött tesztelési eszközkészlet elérési útját.

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

    Tipp.

    Ha letöltötte vagy klónozta az eszközt a Letöltések könyvtárba, az elérési út a következőhöz hasonló lesz: /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1.

    Most már készen áll az eszköz használatára. Amíg ebben a PowerShell-munkamenetben marad, nem kell újra futtatnia az importálási parancsot.

  5. Futtassa az Test-AzTemplate parancsot a terminálban:

    Test-AzTemplate -TemplatePath .
    

    A kimenet a következőhöz hasonló. Figyelje meg, hogy a kiemelt vonalak a tesztet mutatják:

    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
    

    Miután megtalálta a tesztet, hagyja megnyitva ezt a terminálablakot. Később még használni fogja.

Az egyéni teszt újrabontása

Most az egyéni teszt helyes megvalósítása következik.

  1. Térjen vissza a Custom-ParameterNaming.test.ps1 fájlt tartalmazó szövegszerkesztőhöz.

    Megjegyzés:

    Ha véletlenül bezárta a Visual Studio Code-ot, lépjen az arm-ttk/testcases/deploymentTemplate alkönyvtárra, és nyissa meg a Custom-ParameterNaming.test.ps1 fájlt.

  2. Cserélje le a fájl tartalmát a következő kódra:

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

    A fenti kód végiglépked az összes paraméteren. Megvizsgálja az name attribútumot, és ellenőrzi, hogy a név az előtaggal tailwindkezdődik-e. Ha a vizsgált paraméter nem felel meg az elnevezési szabálynak, a kód ezután egy megfelelő hibaüzenettel hívja meg a Write-Error parancsmagot.

A sablonfájl módosítása

Most egy paramétert fog felvenni a sablonfájlba.

  1. Az azuredeploy.json fájlt tartalmazó szövegszerkesztőben módosítsa a fájlt tartalmát az alábbira:

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

    Az előző sablontartalmak olyan paramétert location határoznak meg, amely nem felel meg az elnevezési szabálynak, mert hiányzik belőle az tailwind előtag.

A tesztelési eszközkészlet újrafuttatása

Ezen a ponton már van egy megírt egyéni tesztje. A sablonfájl elnevezései azonban nem tesznek eleget a követelménynek. Emiatt a következő tesztfuttatás várhatóan sikertelen lesz. Győződjön meg erről a következő lépés végrehajtásával.

Megjegyzés:

Használja a már megnyitott Visual Studio Code-beli integrált terminálablakot, amelyben elindította a PowerShellt, és importálta a tesztelési eszközkészletet.

A Visual Studio Code-ban futtassa a Test-AzTemplate parancsot az integrált terminálból:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

Az előző parancs az elnevezett -Testparaméterrel fut, amely bemenetként egy tesztnevet vesz fel. Paraméterként adta meg Custom-ParameterNaming , ami azt jelenti, hogy csak az újonnan kifejlesztett teszt lesz futtatva.

Tipp.

Ajánlott a tesztek fejlesztése során ezt a paramétert használni, mivel ez korlátozza a futtatandó fájlokat és a terminálon keletkező kimenet mennyiségét.

Ennek a parancsnak az alábbi kimenet az eredménye:

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

Az eredmény azt jelzi, hogy a teszt működik. Ellenőrizzük ezt az üzembe helyezési fájl módosításával.

A sablonfájl kijavítása

Elérkezett arra a pontra, amikor az egyéni teszt helyességének ellenőrzéséhez úgy módosítja a sablonfájlt, hogy az megfeleljen az egyéni teszt által előírt szabályoknak.

  1. Abban az Visual Studio Code-példányban, amelyben az azuredeploy-json fájl látható, módosítsa az alábbira a fájl tartalmát:

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

    A névvel ellátott location paraméter átnevezve a következőre tailwindLocation: . Ennek a paraméternek elméletileg át kell mennie a teszten. Járjunk utána.

  2. Továbbra is ebben a Visual Studio Code-példányban maradva futtassa a Test-AzTemplate parancsot az integrált terminálban:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    A kimenet most az alábbihoz hasonló:

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

Sikerült! Implementált és lefuttatott egy egyéni tesztet. Ki is javította az üzembe helyezési sablont, hogy az megfeleljen a teszt feltételének.

Egyéni teszt megírása és futtatása

Egyéni tesztet fog írni, majd a tesztelési eszközkészlet használatával futtatni. Az üzembe helyezési sablont is kijavítja, hogy az megfeleljen a teszten. Az egyéni teszt célja annak ellenőrzése lesz, hogy az összes paraméter követ-e egy elnevezési szabályt. Ez a szabály arra a termékre vonatkozó tartományspecifikus követelmény, amelyen a csapata dolgozik.

A gyakorlathoz ajánlott két szövegszerkesztőt megnyitni:

  • Egyéni teszt írása. Keresse meg a tesztelési eszközkészlet telepítési könyvtárának arm-ttk\testcases\deploymentTemplate\ alkönyvtárának elérési útját. Innen fogja futtatni a Visual Studio Code-ot, ahol egy egyéni tesztet hoz létre és szerkeszt.
  • Sablonfájl megírása és tesztek futtatása. Válasszon ki egy tetszőleges helyet elérési útként. Javasolt erről az elérési útról elindítani a Visual Studio Code egy példányát, hogy amikor szükséges, egyszerűen szerkeszthesse az azuredeploy.json fájlt. Indítson el egy integrált terminált ebben a Visual Studio Code-példányban, hogy egyszerűen futtathasson teszteket.

A sablonfájl létrehozása

Válasszon egy tetszőleges könyvtárt, és hozzon létre egy azuredeploy.json fájlt.

Figyelmeztetés

Ügyeljen rá, hogy a választott könyvtár üres legyen, alkönyvtárak nélkül.

A fájl tartalma legyen a következő:

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

Az egyéni teszt létrehozása

  1. Nyisson meg egy terminált.

  2. Lépjen a tesztelési eszközkészlet telepítési könyvtárára.

  3. Helyezze magát az arm-ttk\testcases\deploymentTemplate alkönyvtárba.

  4. Futtassa az alábbi parancsot:

    code .
    

    Megjegyzés:

    Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a könyvtárt.

  5. Hozzon létre egy Custom-ParameterNaming.test.ps1 nevű fájlt, és töltse fel az alábbi tartalommal:

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

    Hagyja megnyitva a szövegszerkesztőt. Ezt a fájlt később még szerkeszteni fogja.

Az egyéni teszt futtatása

Futtassa az egyéni tesztet az alábbi lépések végrehajtásával:

  1. Nyisson meg egy új terminálablakot, vagy használja újra az előzőt.

  2. Lépjen arra a könyvtárra, ahol létrehozta az azuredeploy.json fájlt.

  3. Futtassa az alábbi parancsot a Visual Studio Code elindításához:

    code .
    

    Megjegyzés:

    Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a sablonkönyvtárt.

  4. A Visual Studio Code-ból nyissa meg az integrált terminált. Nyissa meg a parancskatalógust, írja be a PowerShell szót, és válassza az Integrált terminál megjelenítése lehetőséget.

  5. Futtassa az alábbi parancsot a terminálban:

    Megjegyzés:

    A modul importálása előtt a path\to\arm-ttk\arm-ttk.psd1 útvonal helyére írja be a letöltött tesztelési eszközkészlet elérési útját.

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

    Tipp.

    Ha letöltötte vagy klónozta az eszközt a Letöltések könyvtárba, az elérési út a következőhöz hasonlóan fog kinézni: C:\Users\<user>\Downloads\arm-ttk\arm-ttk\arm-ttk.psd1.

    Most már készen áll az eszköz használatára. Amíg ebben a PowerShell-munkamenetben marad, nem kell újra futtatnia az importálási parancsot.

  6. Futtassa az Test-AzTemplate parancsot a terminálban:

    Test-AzTemplate -TemplatePath .
    

    A kimenet a következőhöz hasonló. Figyelje meg, hogy a kiemelt vonalak a tesztet mutatják:

    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
    

    Miután megtalálta a tesztet, hagyja megnyitva ezt a terminálablakot. Később még használni fogja.

Az egyéni teszt újrabontása

Most az egyéni teszt helyes megvalósítása következik.

  1. Térjen vissza a Custom-ParameterNaming.test.ps1 fájlt tartalmazó szövegszerkesztőhöz.

    Megjegyzés:

    Ha véletlenül bezárta a Visual Studio Code-ot, lépjen a testcases/deploymentTemplate alkönyvtárra, és nyissa meg a Custom-ParameterNaming.test.ps1 fájlt.

  2. Cserélje le a fájl tartalmát a következő kódra:

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

    A fenti kód végiglépked az összes paraméteren. Megvizsgálja az name attribútumot, és ellenőrzi, hogy a név az előtaggal tailwindkezdődik-e. Ha a vizsgált paraméter nem felel meg az elnevezési szabálynak, a kód ezután egy megfelelő hibaüzenettel hívja meg a Write-Error parancsmagot.

A sablonfájl módosítása

Most egy paramétert fog felvenni a sablonfájlba.

  1. Az azuredeploy.json fájlt tartalmazó szövegszerkesztőben módosítsa a fájlt tartalmát az alábbira:

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

    Az előző sablontartalmak olyan paramétert location határoznak meg, amely nem felel meg az elnevezési szabálynak, mert hiányzik belőle az tailwind előtag.

A tesztelési eszközkészlet újrafuttatása

Ezen a ponton már van egy megírt egyéni tesztje. A sablonfájl elnevezései azonban nem tesznek eleget a követelménynek. Emiatt a következő tesztfuttatás várhatóan sikertelen lesz. Győződjön meg erről a következő lépés végrehajtásával.

Használja a már megnyitott Visual Studio Code-beli integrált terminálablakot, amelyben elindította a PowerShellt, és importálta a tesztelési eszközkészletet.

A Visual Studio Code-ban futtassa a Test-AzTemplate parancsot az integrált terminálból:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

Az előző parancs a paraméterrel -Testfut, amely bemenetként egy tesztnevet vesz fel. Paraméterként adta meg Custom-ParameterNaming , ami azt jelenti, hogy csak az újonnan kifejlesztett teszt lesz futtatva.

Tipp.

Ajánlott a tesztek fejlesztése során ezt a paramétert használni, mivel ez korlátozza a futtatandó fájlokat és a terminálon keletkező kimenet mennyiségét.

Ennek a parancsnak az alábbi kimenet az eredménye:

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

Az eredmény azt jelzi, hogy a teszt működik. Ellenőrizzük ezt az üzembe helyezési fájl módosításával.

A sablonfájl kijavítása

Elérkezett arra a pontra, amikor az egyéni teszt helyességének ellenőrzéséhez úgy módosítja a sablonfájlt, hogy az megfeleljen az egyéni teszt által előírt szabályoknak.

  1. Abban az Visual Studio Code-példányban, amelyben az azuredeploy-json fájl látható, módosítsa az alábbira a fájl tartalmát:

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

    A névvel ellátott location paraméter átnevezve a következőre tailwindLocation: . Ennek a paraméternek elméletileg át kell mennie a teszten. Járjunk utána.

  2. Továbbra is ebben a Visual Studio Code-példányban maradva futtassa a Test-AzTemplate parancsot az integrált terminálban:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    A kimenet most az alábbihoz hasonló:

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

Sikerült! Implementált és lefuttatott egy egyéni tesztet. Ki is javította az üzembe helyezési sablont, hogy az megfeleljen a teszt feltételének.