Tartományspecifikus szabályok implementálása egyéni tesztek írásával
Az eddigiekben láthatta, hogyan futtathat teszteket a sablonokon. Előfordulhat azonban, hogy olyan vállalatban vagy csapatban dolgozik, amelynek saját szabálykészlete van. Ezen szabályok miatt esetleg szeretné testre szabni a tesztelési felületet. Elképzelhetők a következő helyzetek:
Egy meghatározott tesztcsomag futtatása. A tesztelési eszközkészlet telepítésekor készen kap néhány tesztet, amelyek futni fognak. Ezek a tesztek a következő könyvtárban találhatók: <directory>/arm-ttk/testcases/deploymentTemplate telepítése.
Ezt a tesztfuttatási felületet testre is szabhatja. A testreszabás egyik módja, ahogy az előző leckében láttuk, a
-Test
paraméter használatával. A futtatandó tesztek körét úgy is módosíthatja, hogy eltávolít egyes fájlokat a könyvtárból. A paraméterrel-Skip
kihagyhat bizonyos teszteket.Tartományspecifikus tesztek írása és futtatása. A tartományspecifikus szabályok kikényszerítéséhez egy tesztfájlt is létre lehet hozni. Ez a lecke elsősorban ezzel a helyzettel foglalkozik.
Saját tesztek írása és futtatása
Úgy határozott, hogy saját tartományspecifikus teszteket ír. Az ilyen tesztek megírásának és futtatásának folyamata a következő:
- Hozzon létre egy fájlt a címtár <telepítési könyvtárában>/arm-ttk/testcases/deploymentTemplate.
- Írja meg a fájl tartalmát a PowerShellben.
- Futtassa a fájlt, és vizsgálja meg az eredményeket.
Egyéni teszt létrehozása
Egy egyéni tesztet a megfelelő könyvtárba kell helyezni: <könyvtár/arm-ttk/testcases/deploymentTemplate telepítése>. Meg kell felelniük a kötőjeles elnevezési konvenciónak, rendelkezniük kell a .test utótaggal és a .ps1 végződéssel. Egy tipikus tesztfájl az alábbihoz hasonló:
Domain-Specific.test.ps1
Tartalomkészítés
Az elkészítendő tesztfájlt a PowerShellben kell megírnia. Egy tesztfájl három része a következő:
Dokumentáció. Ez a rész nem kötelező, de nagyon hasznos. A fájl elején található, és általában megjegyzéseket tartalmaz, amelyek leírják a tesztet, annak működését, és hogy hogyan hívható. A megjegyzések a következő példához hasonlóak lehetnek:
<# .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 #>
Az előző példa egy rövid leírásban leírja, hogy mit végez a teszt egy úgynevezett
.Synopsis
szakaszban. Van egy hosszabb leírás is a .. nevű.Description
szakaszban. Végül van egy szakasz,.Example
amely a teszt futtatásának különböző módjait mutatja be.Bemeneti paraméterek. A tesztfájlnak bemeneti paraméterei is lehetnek. Ezt a szakaszt a param kulcsszó és a zárójelek határozzák meg. Jellemző felépítése a következő:
param( [Parameter(Mandatory=$true)] [PSObject]$TemplateObject, [Parameter(Mandatory=$true)] [string]$TemplateFileName, [string]$SampleName = "$ENV:SAMPLE_NAME" )
Az előző példa három paramétert mutat be:
$TemplateObject
,$TemplateFileName
és$SampleName
. Az első két paraméter kötelező, ahogy aParameter[(Mandatory = $true)]
dekoráció is mutatja. A paraméterek elnevezése tükrözi azok jelentését.$TemplateObject
A sablonfájl objektumábrázolását tartalmazza, ésTemplateFileName
tartalmazza a tesztelt fájl nevét.Tipp.
Az ARM-sablon tesztelési eszközkészletében további információk találhatók a paraméterekről.
Tesztelési logika. A teszt utolsó része a tesztelési logika. A tesztek többségének célja általában az alábbi lépések végrehajtása:
- Végighalad a sablonon.
- Ellenőriz egy vagy több feltételt.
- Hibát jelez, ha valami helytelen.
Kódsegédek
Számos segéd áll rendelkezésre, amelyek a tartalom megkereséséhez és a hibák jelentéséhez nyújtanak segítséget. Az alábbi példák két kódsegédet mutatnak be:
Find-JsonContent. Egy adott értékű adott elem megkeresésében segít. Példa:
Find-JsonContent -Key apiVersion -Value * -Like
Az előző kód segít megtalálni egy JSON-attribútumot a névvel
apiVersion
és az értékével*
, ami lényegében az összes elnevezettapiVersion
attribútumot jelenti . A következőhöz hasonló JSON-objektumnak felelne meg:{ "apiVersion": "2021-01-01" }
Write-Error. Abban segít, hogy közölje a tesztfuttatóval, ha valami nem helyes a sablonban. Felhasználható egy hibaüzenet kifejezésére, és egy sztringkifejezés bármely szükséges változóval történő interpolálására. Ennek használatára példa a következő:
Write-Error "Resource $($resource.Name) Location must be located in westeurope'" -TargetObject $resource
A teszt futtatása
Ezen a ponton elvégezte a tesztet. Ez az ebben a könyvtárban lévő összes többi fájllal együtt lesz futtatva.
Az előző példához hasonlóan úgy is dönthet, hogy csak az adott tesztfájlt futtatja a -Test
paraméterrel. Paraméterként a fájlkiterjesztések tesztfájljának nevét kell megadnia. A Custom-Test.test.ps1 tehát a Test-AzTemplate -TemplatePath /path/to/template -Test Custom-Test
argumentummal futtatható önmagában.