Özel testler yazarak etki alanına özgü kurallar uygulama

Tamamlandı

Önceki bölümlerde şablonlarınızda test çalıştırma adımlarını incelediniz. Ancak, kendi kuralları olan bir şirkette veya ekipte çalışabilirsiniz. Bu kurallar, test deneyimini özelleştirmek istediğiniz anlamına gelebilir. Aşağıdaki senaryolarla karşı karşıya kalabilirsiniz:

  • Belirli bir test paketini çalıştırma. Test araç setini yüklediğinizde çalıştırabileceğiniz bir dizi test elde edersiniz. Bu testler şu dizinde bulunur: <install directory>/arm-ttk/testcases/deploymentTemplate.

    Bu test çalıştırması deneyimi özelleştirilebilir. Önceki ünitede gördüğümüz gibi özelleştirmenin bir yolu parametresini -Test kullanmaktır. Dizindeki dosyaları kaldırarak da çalıştırılan testleri düzenleyebilirsiniz. parametresini -Skip kullanarak belirli testleri atlayabilirsiniz.

  • Etki alanına özgü testler yazma ve çalıştırma. Etki alanına özgü kuralları zorunlu kılmak için bir test dosyası yazmak mümkündür. Bu ünite, bu senaryoya odaklanmaktadır.

Kendi testlerinizi yazma ve çalıştırma

Kendi etki alanınıza özgü testler yazmaya karar verdiniz. Bu tür bir testi yazıp çalıştırmaya yönelik bir akış vardır:

  1. dizin <yükleme dizininde> bir dosya oluşturun/arm-ttk/testcases/deploymentTemplate.
  2. Dosyayı PowerShell'de yazın.
  3. Dosyayı çalıştırın ve sonuçları inceleyin.

Özel test oluşturma

Özel testin doğru dizine yerleştirilmesi gerekir: <install directory>/arm-ttk/testcases/deploymentTemplate. Ayrıca adlandırma standardına uygun olması, kısa çizgi kullanılması, .test son ekinin eklenmesi ve uzantısının .ps1 olması gerekir. Tipik bir test dosyası şuna benzer:

Domain-Specific.test.ps1

Yazma

Test dosyası adı yazmak için PowerShell'i kullanmanız gerekir. Bir test dosyasının üç parçası aşağıda verilmiştir:

  • Belgeler. Bu bölüm isteğe bağlıdır ancak eklenmesi önemli fayda sağlar. Dosyanın en üstünde yer alır ve genellikle testi, işlevini ve çağırma yönergelerini içeren açıklamalar içerir. Açıklamalar aşağıdaki örnekteki gibi görünebilir:

    <#
    .Synopsis
         Ensures that all IDs use the resourceID() function.
    .Description
         Ensures that all IDs use the resourceID() function, or resolve to parameters or variables that use the ResourceID() function.
    .Example
         Test-AzTemplate -TemplatePath .\100-marketplace-sample\ -Test IDs-Should-Be-Derived-From-ResourceIDs
    #>
    

    Yukarıdaki örnekte, adlı .Synopsisbölümde testin ne yaptığı kısa bir açıklamayla açıklanmaktadır. Adlı .Descriptionbölümde daha uzun bir açıklama da vardır. Son olarak, testi çalıştırmanın farklı yollarını gösteren adlı .Example bir bölüm vardır.

  • Giriş parametreleri. Test dosyasında bir dizi farklı giriş parametresi bulunabilir. Bu bölüm, param anahtar sözcüğü ve parantezlerle tanımlanır. Genellikle şöyle görünür:

    param(
       [Parameter(Mandatory=$true)]
       [PSObject]$TemplateObject,
    
       [Parameter(Mandatory=$true)]
       [string]$TemplateFileName,
    
       [string]$SampleName = "$ENV:SAMPLE_NAME"
    )
    

    Yukarıdaki örnekte üç parametre gösterilmektedir: $TemplateObject, $TemplateFileName, ve $SampleName. Dekorasyonda Parameter[(Mandatory = $true)] gösterildiği gibi ilk iki parametre zorunludur. Parametreler, anlamlarına göre adlandırılır. $TemplateObject şablon dosyasının nesne gösterimini içerir ve TemplateFileName test edilen dosyanın adını içerir.

    Bahşiş

    ARM şablonu test araç seti makalesinde parametreler hakkında daha fazla bilgi bulabilirsiniz.

  • Test mantığı. Testin son bölümü ise test mantığının bulunduğu yerdir. Çoğu testte genellikle aşağıdaki adımlar izlenir:

    1. Şablonda gezinme.
    2. Bir veya daha fazla koşulu doğrulama.
    3. Yanlışlık varsa hata oluşturma.

Kod yardımcıları

İstediğiniz içeriği bulmanıza ve hataları bildirmenize yardımcı olacak birçok farklı yardımcı vardır. Kod yardımcılarının iki örneği aşağıda verilmiştir:

  • Find-JsonContent. Belirtilen değere sahip olan bir öğeyi bulmanıza yardımcı olur. Bir örnek aşağıda verilmiştir:

    Find-JsonContent -Key apiVersion -Value * -Like
    

    Yukarıdaki kod, adı apiVersion ve değeri olan bir JSON özniteliğinin bulunmasına *yardımcı olur. Bu, temelde adlı apiVersiontüm öznitelikler anlamına gelir. Aşağıdaki gibi bir JSON nesnesiyle eşleşer:

    {
       "apiVersion": "2021-01-01"
    }
    
  • Write-Error. Test çalıştırmasına şablonda bir hata olduğunu belirtmenize yardımcı olur. Bunu bir hata iletisini ifade etmek ve bir dize ifadesini ihtiyacınız olan değişkenlerle ilişkilendirmek için kullanabilirsiniz. Aşağıda kullanımına dair bir örnek verilmiştir:

      Write-Error "Resource $($resource.Name) Location must be located in westeurope'" -TargetObject $resource
    

Testi çalıştırma

Bu noktada testinizi yazdınız. Dosyanız, aynı dizindeki diğer dosyalarla birlikte çalışacak.

Önceki örnekte olduğu gibi parametresini kullanarak yalnızca belirli bir test dosyanızı çalıştırmayı -Test tercih edebilirsiniz. Parametre olarak, dosya uzantılarından çıkarılmış test dosyası adını verirsiniz. Böylece Custom-Test.test.ps1, Test-AzTemplate -TemplatePath /path/to/template -Test Custom-Test aracılığıyla kendi kendine çalışabilir.