Alıştırma - Özel test yazma ve test araç setiyle çalıştırma

Tamamlandı

Ürün ekibinin bir üyesi olduğunuzdan ekibe veya etki alanına özgü kurallar ekleyebilmenizin önemli olduğunu biliyorsunuz. Bunu gerçekleştirmek için kuralları test olarak uygulamaya alabilirsiniz. Daha sonra, test araç setini kullanarak bu testleri çalıştırabilirsiniz.

Özel test yazma ve çalıştırma

Özel bir test yazacak ve test araç setini kullanarak bunu çalıştıracaksınız. Testin başarılı olduğundan emin olmak için dağıtım şablonunu da düzeltmeniz gerekecek. Özel test, tüm parametrelerin adlandırma kuralına uygun olup olmadığını doğrulayacak. Bu kural, ekibinizin üzerinde çalıştığı ürünle ilgili etki alanına özgü bir gereksinimdir.

Bu alıştırma için iki metin düzenleyici açmanız önerilir:

  • Özel test yazma. Test araç seti yükleme dizininin arm-ttk/testcases/deploymentTemplate/ alt dizinini bulun. Buradan, özel testi oluşturup düzenleyebileceğiniz Visual Studio Code’u çalıştıracaksınız.
  • Şablon dosyası yazma ve testleri çalıştırma. Bu yol için istediğiniz konumu seçin. Gerektiğinde azuredeploy.json dosyasını kolayca düzenleyebilmeniz için bu yoldan bir Visual Studio Code örneği başlatmanız önerilir. Test çalıştırmayı kolaylaştırmak için bu Visual Studio Code örneğinde tümleşik terminal başlatın.

Şablon dosyasını oluşturma

Bir dizin seçip içinde azuredeploy.json adlı bir dosya oluşturun.

Uyarı

Seçtiğiniz dizinin boş olduğundan ve içinde alt dizin bulunmadığından emin olun.

Aşağıdaki içeriği ekleyin:

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

Özel test oluşturma

  1. Visual Studio Code’u açıp test araç setinizin yükleme dizinine gidin. arm-ttk/testcases/deploymentTemplate alt dizinine geçin. Aşağıdaki komutu çalıştırın:

    code .
    

    Dekont

    Visual Studio Code uygulamanız yola eklenmemişse uygulamayı el ile başlatın ve dizini açın.

  2. Custom-ParameterNaming.test.ps1 adlı özel bir test dosyası oluşturun. Dosyaya şu içeriği verin:

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

    Metin düzenleyicisini açık bırakın. Bu dosyayı daha sonra düzenleyeceksiniz.

Özel testi çalıştırma

Aşağıdaki adımları izleyerek özel testi çalıştırın:

  1. Yeni bir terminal penceresi açın veya eskisini yeniden kullanın.

  2. azuredeploy.json dosyasını oluşturduğunuz dizine gidin. Visual Studio Code'u başlatmak için aşağıdaki komutu çalıştırın:

    code .
    

    Dekont

    Visual Studio Code uygulamanız yola eklenmemişse uygulamayı el ile başlatın ve şablon dizinini açın.

  3. Visual Studio Code’da üst taraftaki menüden Terminal>Yeni Terminal’i seçerek tümleşik terminali açın. Terminalde aşağıdaki komutu çalıştırarak bir PowerShell kabuğu başlatın:

    pwsh
    

    Şuna benzer bir çıkış görürsünüz:

    PowerShell 7.0.3
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    https://aka.ms/powershell
    Type 'help' to get help.
    
  4. Terminalde Import-Module komutunu çalıştırın.

    Dekont

    Modülü içeri aktarmadan önce path/to/arm-ttk/arm-ttk.psd1 ifadesini indirilen test araç setinin yoluyla değiştirin.

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

    Bahşiş

    Aracı İndirmeler dizininize indirdiyseniz veya kopyaladıysanız yol şuna benzer olacaktır: /Users/user>/<Downloads/arm-ttk/arm-ttk/arm-ttk/arm-ttk.psd1.

    Şimdi aracı kullanmaya hazırsınız. Aynı PowerShell oturumunu kullanmaya devam ettiğiniz sürece import komutunu yeniden çalıştırmanıza gerek yoktur.

  5. Test çalıştırması başlatmak için terminalde Test-AzTemplate komutunu çalıştırın:

    Test-AzTemplate -TemplatePath .
    

    Çıkışınız aşağıdakine benzer. Vurgulanan çizgilerin testinizi gösterdiğine dikkat edin:

    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
    

    Testi bulduğunuza göre, bu terminal penceresini açık bırakın. Bunu daha sonra yeniden kullanacaksınız.

Özel testi yeniden düzenleme

Şimdi özel testi olması gereken şekilde uygulayacaksınız.

  1. Custom-ParameterNaming.test.ps1 dosyasının açık olduğu metin düzenleyiciye dönün.

    Dekont

    Visual Studio Code’u yanlışlıkla kapattıysanız arm-ttk/testcases/deploymentTemplate alt dizinine gidip Custom-ParameterNaming.test.ps1 adlı dosyayı açın.

  2. Dosyanın içeriğini aşağıdaki kodla değiştirin:

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

    Yukarıdaki kod, tüm parametrelerde yinelenir. Özniteliğini name inceler ve adın ön ekiyle tailwindbaşlayıp başlamadığını denetler. İncelenen parametre adlandırma kuralıyla eşleşmiyorsa, kod cmdlet'ini Write-Error uygun bir hata iletisiyle çağırır.

Şablon dosyasını güncelleştirme

Şimdi şablon dosyasına bir parametre ekleyeceksiniz.

  1. azuredeploy.json dosyasının açık olduğu metin düzenleyiciyi seçin ve dosya içeriğini aşağıdaki şekilde değiştirin:

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

    Yukarıdaki şablon içeriği, ön eki olmadığından tailwind adlandırma kuralını yerine getirmeyen adlı location bir parametre tanımlar.

Test araç setini yeniden çalıştırma

Önceki adımlarda özel bir test yazdınız. Ancak şablon dosyanızın adı, gereksinimlere uygun değil. Bu nedenle çalıştıracağınız testin başarısız olması bekleniyor. Aşağıdaki adımı izleyerek öyle olduğundan emin olun.

PowerShell’in başlatıldığı ve test araç setinin içeri aktarıldığı var olan Visual Studio Code tümleşik terminal penceresini kullanın.

Visual Studio Code'da tümleşik terminalden Test-AzTemplate'i çalıştırın:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

Yukarıdaki komut, giriş olarak bir test adı alan parametresiyle -Testçalıştırılır. Parametre olarak sağladınızCustom-ParameterNaming, bu da yalnızca yeni geliştirilen testinizin çalıştırılacağı anlamına gelir.

Bahşiş

Parametresini -Test kullanmak, çalıştırılanları ve terminal çıkışının boyutunu sınırladığı için test geliştirirken iyi bir uygulamadır.

Bu komut aşağıdaki çıkışı görüntüler:

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

Sonuç, testinizin çalıştığını göstermektedir. Dağıtım dosyasını değiştirerek çalıştığından emin olalım.

Şablon dosyasını düzeltme

Bu aşamada şablon dosyasını özel testin belirlediği kurallara uyacak şekilde değiştirerek özel testinizin doğruluğunu onaylayacaksınız.

  1. azuredeploy.json dosyasını gösteren Visual Studio Code örneğinde dosya içeriğini aşağıdaki şekilde değiştirin:

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

    adlı location parametre olarak yeniden adlandırıldı tailwindLocation. Teoride bu parametrenin testi geçmesi gerekir. Şimdi bunu doğrulayacağız.

  2. Aynı Visual Studio Code örneğiyle devam edin ve tümleşik terminalden Test-AzTemplate komutunu çalıştırın:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    Çıktılarınız artık aşağıdaki gibi görünecektir:

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

Başarılı! Özel bir test uygulayıp çalıştırdınız. Ayrıca, bir dağıtım şablonunu testin koşuluna uyacak şekilde düzelttiniz.

Özel test yazma ve çalıştırma

Özel bir test yazacak ve test araç setini kullanarak bunu çalıştıracaksınız. Testin başarılı olduğundan emin olmak için dağıtım şablonunu da düzeltmeniz gerekecek. Özel test, tüm parametrelerin adlandırma kuralına uygun olup olmadığını doğrulayacak. Bu kural, ekibinizin üzerinde çalıştığı ürünle ilgili etki alanına özgü bir gereksinimdir.

Bu alıştırma için iki metin düzenleyici açmanız önerilir:

  • Özel test yazma. Test araç seti yükleme dizininin arm-ttk/testcases/deploymentTemplate/ alt dizinini bulun. Buradan, özel testi oluşturup düzenleyebileceğiniz Visual Studio Code’u çalıştıracaksınız.
  • Şablon dosyası yazma ve testleri çalıştırma. Bu yol için istediğiniz konumu seçin. Gerektiğinde azuredeploy.json dosyasını kolayca düzenleyebilmeniz için bu yoldan bir Visual Studio Code örneği başlatmanız önerilir. Test çalıştırmayı kolaylaştırmak için bu Visual Studio Code örneğinde tümleşik terminal başlatın.

Şablon dosyasını oluşturma

Bir dizin seçip içinde azuredeploy.json adlı bir dosya oluşturun.

Uyarı

Seçtiğiniz dizinin boş olduğundan ve içinde alt dizin bulunmadığından emin olun.

Aşağıdaki içeriği ekleyin:

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

Özel test oluşturma

  1. Bir terminal açın. Test araç setinizin yükleme dizinine gidin. arm-ttk/testcases/deploymentTemplate alt dizinine geçin. Aşağıdaki komutu çalıştırın:

    code .
    

    Dekont

    Visual Studio Code uygulamanız yola eklenmemişse uygulamayı el ile başlatın ve dizini açın.

  2. Custom-ParameterNaming.test.ps1 adlı özel bir dosya oluşturun. Dosyaya şu içeriği verin:

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

    Metin düzenleyicisini açık bırakın. Bu dosyayı daha sonra düzenleyeceksiniz.

Özel testi çalıştırma

Aşağıdaki adımları izleyerek özel testi çalıştırın:

  1. Yeni bir terminal penceresi açın veya eskisini yeniden kullanın.

  2. azuredeploy.json dosyasını oluşturduğunuz dizine gidin. Visual Studio Code'u başlatmak için aşağıdaki komutu çalıştırın:

    code .
    

    Dekont

    Visual Studio Code uygulamanız yola eklenmemişse uygulamayı el ile başlatın ve şablon dizinini açın.

  3. Visual Studio Code'da üst taraftaki menüden Terminal>Yeni Terminal’i seçerek tümleşik terminali açın. Terminalde aşağıdaki komutu çalıştırarak bir PowerShell kabuğu başlatın:

    pwsh
    

    Şuna benzer bir çıkış görürsünüz:

    PowerShell 7.0.3
    Copyright (c) Microsoft Corporation. All rights reserved.
    
    https://aka.ms/powershell
    Type 'help' to get help.
    
  4. Terminalde Import-Module komutunu çalıştırın.

    Dekont

    Modülü içeri aktarmadan önce path/to/arm-ttk/arm-ttk.psd1 ifadesini indirilen test araç setinin yoluyla değiştirin.

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

    Bahşiş

    Aracı İndirmeler dizininize indirdiyseniz veya kopyaladıysanız yol şuna benzer olacaktır: /Users/user>/<Downloads/arm-ttk/arm-ttk/arm-ttk/arm-ttk.psd1.

    Şimdi aracı kullanmaya hazırsınız. Aynı PowerShell oturumunu kullanmaya devam ettiğiniz sürece import komutunu yeniden çalıştırmanıza gerek yoktur.

  5. Terminalde Test-AzTemplate komutunu çalıştırın:

    Test-AzTemplate -TemplatePath .
    

    Çıkışınız aşağıdakine benzer. Vurgulanan çizgilerin testinizi gösterdiğine dikkat edin:

    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
    

    Testi bulduğunuza göre, bu terminal penceresini açık bırakın. Bunu daha sonra yeniden kullanacaksınız.

Özel testi yeniden düzenleme

Şimdi özel testi olması gereken şekilde uygulayacaksınız.

  1. Custom-ParameterNaming.test.ps1 dosyasının açık olduğu metin düzenleyiciye dönün.

    Dekont

    Visual Studio Code’u yanlışlıkla kapattıysanız arm-ttk/testcases/deploymentTemplate alt dizinine gidip Custom-ParameterNaming.test.ps1 adlı dosyayı açın.

  2. Dosyanın içeriğini aşağıdaki kodla değiştirin:

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

    Yukarıdaki kod, tüm parametrelerde yinelenir. Özniteliğini name inceler ve adın ön ekiyle tailwindbaşlayıp başlamadığını denetler. İncelenen parametre adlandırma kuralıyla eşleşmiyorsa, kod cmdlet'ini Write-Error uygun bir hata iletisiyle çağırır.

Şablon dosyasını güncelleştirme

Şimdi şablon dosyasına bir parametre ekleyeceksiniz.

  1. azuredeploy.json dosyasının açık olduğu metin düzenleyiciyi seçin ve dosya içeriğini aşağıdaki şekilde değiştirin:

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

    Yukarıdaki şablon içeriği, ön eki olmadığından tailwind adlandırma kuralını yerine getirmeyen adlı location bir parametre tanımlar.

Test araç setini yeniden çalıştırma

Önceki adımlarda özel bir test yazdınız. Ancak şablon dosyanızın adı, gereksinimlere uygun değil. Bu nedenle çalıştıracağınız testin başarısız olması bekleniyor. Aşağıdaki adımı izleyerek öyle olduğundan emin olun.

Dekont

PowerShell’in başlatıldığı ve test araç setinin içeri aktarıldığı var olan Visual Studio Code tümleşik terminal penceresini kullanın.

Visual Studio Code'da tümleşik terminalden Test-AzTemplate'i çalıştırın:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

Yukarıdaki komut, giriş olarak bir test adı alan adlı -Testparametresiyle çalıştırılır. Parametre olarak sağladınız Custom-ParameterNaming , bu da yalnızca yeni geliştirilen testinizin çalıştırılacağı anlamına gelir.

Bahşiş

Çalıştırılan testleri ve terminal çıkışının boyutunu sınırlandırdığından bu parametreyi kullanmak, test geliştirme aşamasında fayda sağlar.

Bu komut aşağıdaki çıkışı görüntüler:

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

Sonuç, testinizin çalıştığını göstermektedir. Dağıtım dosyasını değiştirerek çalıştığından emin olalım.

Şablon dosyasını düzeltme

Bu aşamada şablon dosyasını özel testin belirlediği kurallara uyacak şekilde değiştirerek özel testinizin doğruluğunu onaylayacaksınız.

  1. azuredeploy.json dosyasını gösteren Visual Studio Code örneğinde dosya içeriğini aşağıdaki şekilde değiştirin:

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

    adlı location parametre olarak yeniden adlandırıldı tailwindLocation. Teoride bu parametrenin testi geçmesi gerekir. Şimdi bunu doğrulayacağız.

  2. Aynı Visual Studio Code örneğiyle devam edin ve tümleşik terminalden Test-AzTemplate komutunu çalıştırın:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    Çıktılarınız artık aşağıdaki gibi görünecektir:

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

Başarılı! Özel bir test uygulayıp çalıştırdınız. Ayrıca, bir dağıtım şablonunu testin koşuluna uyacak şekilde düzelttiniz.

Özel test yazma ve çalıştırma

Özel bir test yazacak ve test araç setini kullanarak bunu çalıştıracaksınız. Testin başarılı olduğundan emin olmak için dağıtım şablonunu da düzeltmeniz gerekecek. Özel test, tüm parametrelerin adlandırma kuralına uygun olup olmadığını doğrulayacak. Bu kural, ekibinizin üzerinde çalıştığı ürünle ilgili etki alanına özgü bir gereksinimdir.

Bu alıştırma için iki metin düzenleyici açmanız önerilir:

  • Özel test yazma. Test araç setinin yükleme dizininin arm-ttk\testcases\deploymentTemplate\ alt dizininin yolunu bulun. Buradan, özel testi oluşturup düzenleyebileceğiniz Visual Studio Code’u çalıştıracaksınız.
  • Şablon dosyası yazma ve testleri çalıştırma. Bu yol için istediğiniz konumu seçin. Gerektiğinde azuredeploy.json dosyasını kolayca düzenleyebilmeniz için bu yoldan bir Visual Studio Code örneği başlatmanız önerilir. Test çalıştırmayı kolaylaştırmak için bu Visual Studio Code örneğinde tümleşik terminal başlatın.

Şablon dosyasını oluşturma

Bir dizin seçip içinde azuredeploy.json adlı bir dosya oluşturun.

Uyarı

Seçtiğiniz dizinin boş olduğundan ve içinde alt dizin bulunmadığından emin olun.

Aşağıdaki içeriği ekleyin:

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

Özel test oluşturma

  1. Bir terminal açın.

  2. Test araç setinizin yükleme dizinine gidin.

  3. Kendinizi arm-ttk\testcases\deploymentTemplate alt dizinine yerleştirin.

  4. Aşağıdaki komutu çalıştırın:

    code .
    

    Dekont

    Visual Studio Code uygulamanız yola eklenmemişse uygulamayı el ile başlatın ve dizini açın.

  5. Custom-ParameterNaming.test.ps1 adlı bir dosya oluşturup aşağıdaki içeriği ekleyin:

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

    Metin düzenleyicisini açık bırakın. Bu dosyayı daha sonra düzenleyeceksiniz.

Özel testi çalıştırma

Aşağıdaki adımları izleyerek özel testi çalıştırın:

  1. Yeni bir terminal penceresi açın veya eskisini yeniden kullanın.

  2. azuredeploy.json dosyasını oluşturduğunuz dizine gidin.

  3. Visual Studio Code'u başlatmak için aşağıdaki komutu çalıştırın:

    code .
    

    Dekont

    Visual Studio Code uygulamanız yola eklenmemişse uygulamayı el ile başlatın ve şablon dizinini açın.

  4. Visual Studio Code'da tümleşik terminali açın. Komut paletini açın, PowerShell yazın ve Tümleşik terminali göster’i seçin.

  5. Terminalde aşağıdaki komutu çalıştırın:

    Dekont

    Modülü içeri aktarmadan önce path\to\arm-ttk\arm-ttk.psd1 ifadesini indirilen test araç setinin yoluyla değiştirin.

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

    Bahşiş

    Aracı İndirmeler dizininize indirdiyseniz veya kopyaladıysanız, yol şuna benzer olacaktır: C:\Users\<user>\Downloads\arm-ttk\arm-ttk\arm-ttk\arm-ttk.psd1.

    Şimdi aracı kullanmaya hazırsınız. Aynı PowerShell oturumunu kullanmaya devam ettiğiniz sürece import komutunu yeniden çalıştırmanıza gerek yoktur.

  6. Terminalde Test-AzTemplate komutunu çalıştırın:

    Test-AzTemplate -TemplatePath .
    

    Çıkışınız aşağıdakine benzer. Vurgulanan çizgilerin testinizi gösterdiğine dikkat edin:

    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
    

    Testi bulduğunuza göre, bu terminal penceresini açık bırakın. Bunu daha sonra yeniden kullanacaksınız.

Özel testi yeniden düzenleme

Şimdi özel testi olması gereken şekilde uygulayacaksınız.

  1. Custom-ParameterNaming.test.ps1 dosyasının açık olduğu metin düzenleyiciye dönün.

    Dekont

    Visual Studio Code’u yanlışlıkla kapattıysanız testcases/deploymentTemplate alt dizinine gidip Custom-ParameterNaming.test.ps1 adlı dosyayı açın.

  2. Dosyanın içeriğini aşağıdaki kodla değiştirin:

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

    Yukarıdaki kod, tüm parametrelerde yinelenir. Özniteliğini name inceler ve adın ön ekiyle tailwindbaşlayıp başlamadığını denetler. İncelenen parametre adlandırma kuralıyla eşleşmiyorsa, kod cmdlet'ini Write-Error uygun bir hata iletisiyle çağırır.

Şablon dosyasını güncelleştirme

Şimdi şablon dosyasına bir parametre ekleyeceksiniz.

  1. azuredeploy.json dosyasının açık olduğu metin düzenleyiciyi seçin ve dosya içeriğini aşağıdaki şekilde değiştirin:

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

    Yukarıdaki şablon içeriği, ön eki olmadığından tailwind adlandırma kuralını yerine getirmeyen adlı location bir parametre tanımlar.

Test araç setini yeniden çalıştırma

Önceki adımlarda özel bir test yazdınız. Ancak şablon dosyanızın adı, gereksinimlere uygun değil. Bu nedenle çalıştıracağınız testin başarısız olması bekleniyor. Aşağıdaki adımı izleyerek öyle olduğundan emin olun.

PowerShell’in başlatıldığı ve test araç setinin içeri aktarıldığı var olan Visual Studio Code tümleşik terminal penceresini kullanın.

Visual Studio Code'da tümleşik terminalden Test-AzTemplate'i çalıştırın:

Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming

Yukarıdaki komut, giriş olarak bir test adı alan parametresiyle -Testçalıştırılır. Parametre olarak sağladınız Custom-ParameterNaming , bu da yalnızca yeni geliştirilen testinizin çalıştırılacağı anlamına gelir.

Bahşiş

Çalıştırılan testleri ve terminal çıkışının boyutunu sınırlandırdığından bu parametreyi kullanmak, test geliştirme aşamasında fayda sağlar.

Bu komut aşağıdaki çıkışı görüntüler:

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

Sonuç, testinizin çalıştığını göstermektedir. Dağıtım dosyasını değiştirerek çalıştığından emin olalım.

Şablon dosyasını düzeltme

Bu aşamada şablon dosyasını özel testin belirlediği kurallara uyacak şekilde değiştirerek özel testinizin doğruluğunu onaylayacaksınız.

  1. azuredeploy.json dosyasını gösteren Visual Studio Code örneğinde dosya içeriğini aşağıdaki şekilde değiştirin:

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

    adlı location parametre olarak yeniden adlandırıldı tailwindLocation. Teoride bu parametrenin testi geçmesi gerekir. Şimdi bunu doğrulayacağız.

  2. Aynı Visual Studio Code örneğiyle devam edin ve tümleşik terminalden Test-AzTemplate komutunu çalıştırın:

    Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
    

    Çıktılarınız artık aşağıdaki gibi görünecektir:

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

Başarılı! Özel bir test uygulayıp çalıştırdınız. Ayrıca, bir dağıtım şablonunu testin koşuluna uyacak şekilde düzelttiniz.