Implementace pravidel specifických pro doménu pomocí vytváření vlastních testů
Zatím jste viděli, jak na šablony použít některé testy. Můžete ale pracovat ve společnosti nebo týmu, který má vlastní sadu pravidel. Kvůli těmto pravidlům můžete chtít možnosti testování přizpůsobit. Můžete mít tyto scénáře:
Spuštění konkrétní sady testů. Při instalaci testovací sady nástrojů získáte sadu testů, které se budou spouštět. Tyto testy se nacházejí v následujícím adresáři: <nainstalujte adresář>/arm-ttk/testcases/deploymentTemplate.
Možnosti tohoto testovacího běhu je možné přizpůsobit. Jedním ze způsobů, jak přizpůsobit, jak jsme viděli v předchozí lekci, je použití parametru
-Test
. Spouštěné testy můžete také upravit odebráním souborů v adresáři. Konkrétní testy můžete přeskočit pomocí parametru-Skip
.Vytvoření a spuštění testů specifických pro doménu. Je možné vytvořit testovací soubor, který vynucuje pravidla specifická pro doménu. Tato lekce se soustředí hlavně na tento scénář.
Vytvoření a spuštění vlastních testů
Rozhodli jste se vytvořit vlastní test specifický pro doménu. Tok vytvoření a spuštění takového testu je následující:
- Vytvořte soubor v <adresáři install directory>/arm-ttk/testcases/deploymentTemplate.
- Vytvořte soubor v PowerShellu.
- Spusťte soubor a zkontrolujte výsledky.
Vytvoření vlastního testu
Vlastní test musí být umístěný ve správném adresáři: <nainstalujte adresář>/arm-ttk/testcases/deploymentTemplate. Musí také dodržovat standardní pojmenování s pomlčkami a příponou .test a ukončením .ps1. Typický soubor testu vypadá takto:
Domain-Specific.test.ps1
Vytváření obsahu
Pokud chcete vytvořit název testovacího souboru, musíte ho napsat v PowerShellu. Soubor testu má tři části:
Dokumentace: Tato část je volitelná, ale je velmi výhodné ji přidat. Nachází se v horní části souboru a obvykle obsahuje komentáře popisující test, jeho funkci a způsob, jak ho volat. Komentáře mohou vypadat jako v následujícím příkladu:
<# .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 #>
Předchozí příklad popisuje, co test dělá v krátkém popisu v části s názvem
.Synopsis
. V oddílu s názvem.Description
je také delší popis . Nakonec existuje část s názvem.Example
, která ukazuje různé způsoby spuštění testu.Vstupní parametry: Testovací soubor může mít sadu vstupních parametrů. Tato část je definována klíčovým slovem param a závorkami. Obvykle může vypadat takto:
param( [Parameter(Mandatory=$true)] [PSObject]$TemplateObject, [Parameter(Mandatory=$true)] [string]$TemplateFileName, [string]$SampleName = "$ENV:SAMPLE_NAME" )
Předchozí příklad ukazuje tři parametry:
$TemplateObject
,$TemplateFileName
a$SampleName
. První dva parametry jsou povinné, jak je znázorněnoParameter[(Mandatory = $true)]
dekorací. Parametry jsou pojmenovány podle svého významu.$TemplateObject
obsahuje reprezentaci objektu souboru šablony aTemplateFileName
obsahuje název otestovaného souboru.Logika testu: Poslední částí testu je logika testu. Většina testů obvykle chce provést tyto kroky:
- Iterovat se v šabloně
- Ověřit jednu nebo více podmínek
- Vyvolat chybu, pokud dojde k něčemu nesprávnému
Pomocné rutiny kódu
K dispozici je mnoho pomocných rutin, které vám pomohou najít potřebný obsah a také ohlásit případné chyby. Uvedeme zde dva příklady:
Find-JsonContent. Pomáhá vám najít konkrétní prvek s konkrétní hodnotou. Tady je příklad:
Find-JsonContent -Key apiVersion -Value * -Like
Předchozí kód pomáhá najít atribut JSON s názvem
apiVersion
a hodnotou*
, což v podstatě znamená všechny atributy pojmenovanéapiVersion
. Odpovídá objektu JSON takto:{ "apiVersion": "2021-01-01" }
Write-Error. Pomáhá informovat toho, kdo test spustil, že v šabloně není něco v pořádku. Můžete ji použít k vyjádření chybové zprávy a interpolaci řetězcového výrazu libovolnými proměnnými, které potřebujete. Tady je příklad použití:
Write-Error "Resource $($resource.Name) Location must be located in westeurope'" -TargetObject $resource
Spuštění testu
V tuto chvíli jste vytvořili svůj test. Spustí se společně se všemi ostatními soubory ve stejném adresáři.
Stejně jako v předchozím příkladu se můžete rozhodnout spustit pouze váš konkrétní testovací soubor pomocí parametru -Test
. Jako parametr byste mu dali název testovacího souboru, který se odstraní z přípon souborů.
Custom-Test.test.ps1 se pak bude spouštět samotný bez příkazu Test-AzTemplate -TemplatePath /path/to/template -Test Custom-Test
.