Menerapkan aturan khusus domain dengan penulisan tes kustom
Sejauh ini Anda telah melihat cara menjalankan beberapa pengujian pada template Anda. Namun, Anda mungkin beroperasi di perusahaan atau tim yang memiliki seperangkat aturannya sendiri. Aturan ini mungkin berarti Bahwa Anda ingin menyesuaikan pengalaman pengujian. Anda mungkin memiliki skenario berikut:
Jalankan rangkaian pengujian tertentu. Setelah instalasi toolkit pengujian, Anda diberikan serangkaian tes yang akan dijalankan. Pengujian ini terletak di direktori berikut: <instal direktori>/arm-ttk/testcases/deploymentTemplate.
Dimungkinkan untuk menyesuaikan pengalaman uji coba ini. Salah satu cara untuk menyesuaikan, seperti yang telah kita ketahui di pelajaran sebelumnya, adalah dengan menggunakan parameter
-Test. Anda juga dapat mengedit pengujian apa yang sedang dijalankan dengan menghapus file di direktori. Anda dapat melewati pengujian tertentu dengan menggunakan parameter-Skip.Menulis dan menjalankan pengujian khusus domain. File uji dapat ditulis untuk menerapkan aturan khusus domain. Unit ini sebagian besar akan berfokus pada skenario ini.
Penulisan dan menjalankan tes Anda sendiri
Anda telah memutuskan untuk menulis pengujian khusus domain Anda sendiri. Ada aliran untuk penulisan dan menjalankan tes seperti itu:
- Buat file di <direktori install directory>/arm-ttk/testcases/deploymentTemplate.
- Tulis file di PowerShell.
- Jalankan file dan periksa hasilnya.
Membuat pengujian kustom
Pengujian kustom perlu ditempatkan di direktori yang benar: <instal direktori>/arm-ttk/testcases/deploymentTemplate. Ini juga perlu mengikuti standar penamaan dengan tanda hubung, dengan akhiran .test, dan berakhiran .ps1. File pengujian umum terlihat seperti ini:
Domain-Specific.test.ps1
Penulisan
Untuk menulis nama file pengujian, Anda perlu menulisnya di PowerShell. Tiga bagian file pengujian adalah:
Dokumentasi . Bagian ini opsional tetapi sangat menguntungkan untuk ditambahkan. Itu berada di bagian atas file dan biasanya berisi serangkaian komentar yang menggambarkan apakah tes itu, apa yang dilakukannya, dan bagaimana menyebutnya. Komentar dapat terlihat seperti contoh berikut:
<# .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 #>Contoh sebelumnya menjelaskan fungsi pengujian dalam deskripsi singkat di bagian
.Synopsis. Ada juga deskripsi yang lebih panjang di bagian.Description. Terakhir, ada bagian.Exampleyang menunjukkan berbagai cara untuk menjalankan pengujian.Parameter masukan. File pengujian dapat memiliki sekumpulan parameter input. Bagian ini didefinisikan oleh param kata kunci dan tanda kurung. Biasanya bisa terlihat seperti ini:
param( [Parameter(Mandatory=$true)] [PSObject]$TemplateObject, [Parameter(Mandatory=$true)] [string]$TemplateFileName, [string]$SampleName = "$ENV:SAMPLE_NAME" )Contoh sebelumnya menunjukkan tiga parameter:
$TemplateObject,$TemplateFileName, dan$SampleName. Dua parameter pertama adalah wajib, seperti yang ditunjukkan oleh dekorasiParameter[(Mandatory = $true)]. Parameter dinamai sesuai dengan artinya.$TemplateObjectberisi representasi objek file templat, danTemplateFileNameberisi nama file yang sedang diuji.Petunjuk / Saran
Ada informasi selengkapnya tentang parameter dalam artikel toolkit pengujian templat ARM.
Logika pengujian. Bagian terakhir dari tes adalah logika tes. Sebagian besar tes biasanya ingin melakukan langkah-langkah berikut:
- Iterasi melalui template.
- Verifikasi satu atau beberapa kondisi.
- Timbulkan kesalahan jika ada yang tidak beres.
Pembantu kode
Ada banyak pembantu yang akan membantu Anda menemukan konten yang Anda butuhkan dan melaporkan kesalahan apa pun. Berikut adalah dua contoh pembantu kode:
Find-JsonContent. Membantu Anda menemukan elemen tertentu dengan nilai tertentu. Berikut contohnya:
Find-JsonContent -Key apiVersion -Value * -LikeKode sebelumnya membantu menemukan atribut JSON dengan nama
apiVersiondan nilai*, yang pada dasarnya berarti semua atribut bernamaapiVersion. Ini akan cocok dengan objek JSON seperti:{ "apiVersion": "2021-01-01" }Kesalahan Penulisan. Membantu Anda berkomunikasi dengan pelari uji bahwa ada sesuatu yang salah dalam template. Anda dapat menggunakannya untuk mengekspresikan pesan kesalahan dan menginterpolasi ekspresi string dengan variabel apa pun yang Anda butuhkan. Berikut ini contoh cara menggunakannya:
Write-Error "Resource $($resource.Name) Location must be located in westeurope'" -TargetObject $resource
Jalankan tes
Pada poin ini, Anda telah menulis pengujian Anda. Ini akan dijalankan bersama-sama dengan semua file lain dalam direktori yang sama.
Seperti halnya pengujian lainnya, Anda dapat memilih untuk hanya menjalankan file uji tertentu dengan menggunakan parameter -Test. Sebagai parameter, Anda akan memberinya nama file uji yang dilucuti dari ekstensi file.
Custom-Test.test.ps1 kemudian akan dijalankan dengan sendirinya melalui Test-AzTemplate -TemplatePath /path/to/template -Test Custom-Test.