Gyakorlat – Egyéni tesztek írása és futtatása a tesztelési eszközkészlettel
Egy termékcsapat tagjaként jól tudja, mennyire fontos, hogy implementálni tudjon csapat- vagy tartományspecifikus szabályokat. Ennek egy módja, hogy a szabályokat tesztekként implementálja. Ezeket a teszteket aztán a tesztelési eszközkészlet használatával futtathatja.
Egyéni teszt megírása és futtatása
Egyéni tesztet fog írni, majd a tesztelési eszközkészlet használatával futtatni. Az üzembe helyezési sablont is kijavítja, hogy az megfeleljen a teszten. Az egyéni teszt célja annak ellenőrzése lesz, hogy az összes paraméter követ-e egy elnevezési szabályt. Ez a szabály arra a termékre vonatkozó tartományspecifikus követelmény, amelyen a csapata dolgozik.
A gyakorlathoz ajánlott két szövegszerkesztőt megnyitni:
- Egyéni teszt írása. Lépjen a tesztelési eszközkészlet telepítési könyvtárának arm-ttk/testcases/deploymentTemplate/ alkönyvtárára. Innen fogja futtatni a Visual Studio Code-ot, ahol egy egyéni tesztet hoz létre és szerkeszt.
- Sablonfájl megírása és tesztek futtatása. Válasszon ki egy tetszőleges helyet elérési útként. Javasolt erről az elérési útról elindítani a Visual Studio Code egy példányát, hogy amikor szükséges, egyszerűen szerkeszthesse az azuredeploy.json fájlt. Indítson el egy integrált terminált ebben a Visual Studio Code-példányban, hogy egyszerűen futtathasson teszteket.
A sablonfájl létrehozása
Válasszon egy tetszőleges könyvtárt, és hozzon létre egy azuredeploy.json fájlt.
Figyelmeztetés
Ügyeljen rá, hogy a választott könyvtár üres legyen, alkönyvtárak nélkül.
A fájl tartalma legyen a következő:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": []
}
Az egyéni teszt létrehozása
Nyissa meg a Visual Studio Code-ot, és lépjen a tesztelési eszközkészlet telepítési könyvtárára. Lépjen be az arm-ttk/testcases/deploymentTemplate alkönyvtárba. Futtassa az alábbi parancsot:
code .
Megjegyzés:
Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a könyvtárt.
Hozzon létre egy Custom-ParameterNaming.test.ps1 nevű egyéni tesztfájlt. A fájl tartalma legyen a következő:
param( [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array [PSObject] $MainTemplateResources ) Write-Error "To be implemented"
Hagyja megnyitva a szövegszerkesztőt. Ezt a fájlt később még szerkeszteni fogja.
Az egyéni teszt futtatása
Futtassa az egyéni tesztet az alábbi lépések végrehajtásával:
Nyisson meg egy új terminálablakot, vagy használja újra az előzőt.
Lépjen arra a könyvtárra, ahol létrehozta az azuredeploy.json fájlt. Futtassa az alábbi parancsot a Visual Studio Code elindításához:
code .
Megjegyzés:
Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a sablonkönyvtárt.
Nyissa meg az integrált terminált a Visual Studio Code felső menüjének Terminál>Új terminál menüpontjával. A terminálban kiadott alábbi paranccsal indítson el egy PowerShell-rendszerhéjat:
pwsh
A következőhöz hasonló kimenet jelenik meg:
PowerShell 7.0.3 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help.
Futtassa az
Import-Module
parancsot a terminálban.Megjegyzés:
A modul importálása előtt a path/to/arm-ttk/arm-ttk.psd1 útvonal helyére írja be a letöltött tesztelési eszközkészlet elérési útját.
Import-Module path/to/arm-ttk/arm-ttk.psd1
Tipp.
Ha letöltötte vagy klónozta az eszközt a Letöltések könyvtárba, az elérési út a következőhöz hasonló lesz: /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1.
Most már készen áll az eszköz használatára. Amíg ebben a PowerShell-munkamenetben marad, nem kell újra futtatnia az importálási parancsot.
Adja ki a
Test-AzTemplate
parancsot a terminálban egy tesztfuttatás elindításához:Test-AzTemplate -TemplatePath .
A kimenet a következőhöz hasonló. Figyelje meg, hogy a kiemelt vonalak a tesztet mutatják:
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
Miután megtalálta a tesztet, hagyja megnyitva ezt a terminálablakot. Később még használni fogja.
Az egyéni teszt újrabontása
Most az egyéni teszt helyes megvalósítása következik.
Térjen vissza a Custom-ParameterNaming.test.ps1 fájlt tartalmazó szövegszerkesztőhöz.
Megjegyzés:
Ha véletlenül bezárta a Visual Studio Code-ot, lépjen az arm-ttk/testcases/deploymentTemplate alkönyvtárra, és nyissa meg a Custom-ParameterNaming.test.ps1 fájlt.
Cserélje le a fájl tartalmát a következő kódra:
<# .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 } }
A fenti kód végiglépked az összes paraméteren. Megvizsgálja az
name
attribútumot, és ellenőrzi, hogy a név az előtaggaltailwind
kezdődik-e. Ha a vizsgált paraméter nem felel meg az elnevezési szabálynak, a kód ezután egy megfelelő hibaüzenettel hívja meg aWrite-Error
parancsmagot.
A sablonfájl módosítása
Most egy paramétert fog felvenni a sablonfájlba.
Az azuredeploy.json fájlt tartalmazó szövegszerkesztőben módosítsa a fájlt tartalmát az alábbira:
{ "$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": [] }
Az előző sablontartalmak olyan paramétert
location
határoznak meg, amely nem felel meg az elnevezési szabálynak, mert hiányzik belőle aztailwind
előtag.
A tesztelési eszközkészlet újrafuttatása
Ezen a ponton már van egy megírt egyéni tesztje. A sablonfájl elnevezései azonban nem tesznek eleget a követelménynek. Emiatt a következő tesztfuttatás várhatóan sikertelen lesz. Győződjön meg erről a következő lépés végrehajtásával.
Használja a már megnyitott Visual Studio Code-beli integrált terminálablakot, amelyben elindította a PowerShellt, és importálta a tesztelési eszközkészletet.
A Visual Studio Code-ban futtassa a Test-AzTemplate
parancsot az integrált terminálból:
Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Az előző parancs a paraméterrel -Test
fut, amely bemenetként egy tesztnevet vesz fel. Paraméterként adta meg Custom-ParameterNaming
, ami azt jelenti, hogy csak az újonnan kifejlesztett teszt lesz futtatva.
Tipp.
-Test
A paraméter használata jó gyakorlat egy teszt fejlesztésekor, mert korlátozza a futtatás eredményét és a terminálkimenet méretét.
Ennek a parancsnak az alábbi kimenet az eredménye:
Validating custom\azuredeploy.json
deploymentTemplate
[-] Custom ParameterNaming (2ms)
Parameter 'location' must start with prefix 'tailwind'
Az eredmény azt jelzi, hogy a teszt működik. Ellenőrizzük ezt az üzembe helyezési fájl módosításával.
A sablonfájl kijavítása
Elérkezett arra a pontra, amikor az egyéni teszt helyességének ellenőrzéséhez úgy módosítja a sablonfájlt, hogy az megfeleljen az egyéni teszt által előírt szabályoknak.
Abban az Visual Studio Code-példányban, amelyben az azuredeploy-json fájl látható, módosítsa az alábbira a fájl tartalmát:
{ "$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": [] }
A névvel ellátott
location
paraméter átnevezve a következőretailwindLocation
: . Ennek a paraméternek elméletileg át kell mennie a teszten. Járjunk utána.Továbbra is ebben a Visual Studio Code-példányban maradva futtassa a
Test-AzTemplate
parancsot az integrált terminálban:Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
A kimenet most az alábbihoz hasonló:
Validating custom\azuredeploy.json deploymentTemplate [+] Custom ParameterNaming (2 ms)
Sikerült! Implementált és lefuttatott egy egyéni tesztet. Ki is javította az üzembe helyezési sablont, hogy az megfeleljen a teszt feltételének.
Egyéni teszt megírása és futtatása
Egyéni tesztet fog írni, majd a tesztelési eszközkészlet használatával futtatni. Az üzembe helyezési sablont is kijavítja, hogy az megfeleljen a teszten. Az egyéni teszt célja annak ellenőrzése lesz, hogy az összes paraméter követ-e egy elnevezési szabályt. Ez a szabály arra a termékre vonatkozó tartományspecifikus követelmény, amelyen a csapata dolgozik.
A gyakorlathoz ajánlott két szövegszerkesztőt megnyitni:
- Egyéni teszt írása. Lépjen a tesztelési eszközkészlet telepítési könyvtárának arm-ttk/testcases/deploymentTemplate/ alkönyvtárára. Innen fogja futtatni a Visual Studio Code-ot, ahol egy egyéni tesztet hoz létre és szerkeszt.
- Sablonfájl megírása és tesztek futtatása. Válasszon ki egy tetszőleges helyet elérési útként. Javasolt erről az elérési útról elindítani a Visual Studio Code egy példányát, hogy amikor szükséges, egyszerűen szerkeszthesse az azuredeploy.json fájlt. Indítson el egy integrált terminált ebben a Visual Studio Code-példányban, hogy egyszerűen futtathasson teszteket.
A sablonfájl létrehozása
Válasszon egy tetszőleges könyvtárt, és hozzon létre egy azuredeploy.json fájlt.
Figyelmeztetés
Ügyeljen rá, hogy a választott könyvtár üres legyen, alkönyvtárak nélkül.
A fájl tartalma legyen a következő:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": []
}
Az egyéni teszt létrehozása
Nyisson meg egy terminált. Lépjen a tesztelési eszközkészlet telepítési könyvtárára. Lépjen be az arm-ttk/testcases/deploymentTemplate alkönyvtárba. Futtassa az alábbi parancsot:
code .
Megjegyzés:
Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a könyvtárt.
Hozzon létre egy Custom-ParameterNaming.test.ps1 nevű egyéni fájlt. A fájl tartalma legyen a következő:
param( [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array [PSObject] $MainTemplateResources ) Write-Error "To be implemented"
Hagyja megnyitva a szövegszerkesztőt. Ezt a fájlt később még szerkeszteni fogja.
Az egyéni teszt futtatása
Futtassa az egyéni tesztet az alábbi lépések végrehajtásával:
Nyisson meg egy új terminálablakot, vagy használja újra az előzőt.
Lépjen arra a könyvtárra, ahol létrehozta az azuredeploy.json fájlt. Futtassa az alábbi parancsot a Visual Studio Code elindításához:
code .
Megjegyzés:
Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a sablonkönyvtárt.
Nyissa meg az integrált terminált a Visual Studio Code felső menüjének Terminál>Új terminál menüpontjával. A terminálban kiadott alábbi paranccsal indítson el egy PowerShell-rendszerhéjat:
pwsh
A következőhöz hasonló kimenet jelenik meg:
PowerShell 7.0.3 Copyright (c) Microsoft Corporation. All rights reserved. https://aka.ms/powershell Type 'help' to get help.
Futtassa az
Import-Module
parancsot a terminálban.Megjegyzés:
A modul importálása előtt a path/to/arm-ttk/arm-ttk.psd1 útvonal helyére írja be a letöltött tesztelési eszközkészlet elérési útját.
Import-Module path/to/arm-ttk/arm-ttk.psd1
Tipp.
Ha letöltötte vagy klónozta az eszközt a Letöltések könyvtárba, az elérési út a következőhöz hasonló lesz: /Users/<user>/Downloads/arm-ttk/arm-ttk/arm-ttk.psd1.
Most már készen áll az eszköz használatára. Amíg ebben a PowerShell-munkamenetben marad, nem kell újra futtatnia az importálási parancsot.
Futtassa az
Test-AzTemplate
parancsot a terminálban:Test-AzTemplate -TemplatePath .
A kimenet a következőhöz hasonló. Figyelje meg, hogy a kiemelt vonalak a tesztet mutatják:
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
Miután megtalálta a tesztet, hagyja megnyitva ezt a terminálablakot. Később még használni fogja.
Az egyéni teszt újrabontása
Most az egyéni teszt helyes megvalósítása következik.
Térjen vissza a Custom-ParameterNaming.test.ps1 fájlt tartalmazó szövegszerkesztőhöz.
Megjegyzés:
Ha véletlenül bezárta a Visual Studio Code-ot, lépjen az arm-ttk/testcases/deploymentTemplate alkönyvtárra, és nyissa meg a Custom-ParameterNaming.test.ps1 fájlt.
Cserélje le a fájl tartalmát a következő kódra:
<# .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 } }
A fenti kód végiglépked az összes paraméteren. Megvizsgálja az
name
attribútumot, és ellenőrzi, hogy a név az előtaggaltailwind
kezdődik-e. Ha a vizsgált paraméter nem felel meg az elnevezési szabálynak, a kód ezután egy megfelelő hibaüzenettel hívja meg aWrite-Error
parancsmagot.
A sablonfájl módosítása
Most egy paramétert fog felvenni a sablonfájlba.
Az azuredeploy.json fájlt tartalmazó szövegszerkesztőben módosítsa a fájlt tartalmát az alábbira:
{ "$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": [] }
Az előző sablontartalmak olyan paramétert
location
határoznak meg, amely nem felel meg az elnevezési szabálynak, mert hiányzik belőle aztailwind
előtag.
A tesztelési eszközkészlet újrafuttatása
Ezen a ponton már van egy megírt egyéni tesztje. A sablonfájl elnevezései azonban nem tesznek eleget a követelménynek. Emiatt a következő tesztfuttatás várhatóan sikertelen lesz. Győződjön meg erről a következő lépés végrehajtásával.
Megjegyzés:
Használja a már megnyitott Visual Studio Code-beli integrált terminálablakot, amelyben elindította a PowerShellt, és importálta a tesztelési eszközkészletet.
A Visual Studio Code-ban futtassa a Test-AzTemplate
parancsot az integrált terminálból:
Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Az előző parancs az elnevezett -Test
paraméterrel fut, amely bemenetként egy tesztnevet vesz fel. Paraméterként adta meg Custom-ParameterNaming
, ami azt jelenti, hogy csak az újonnan kifejlesztett teszt lesz futtatva.
Tipp.
Ajánlott a tesztek fejlesztése során ezt a paramétert használni, mivel ez korlátozza a futtatandó fájlokat és a terminálon keletkező kimenet mennyiségét.
Ennek a parancsnak az alábbi kimenet az eredménye:
Validating custom\azuredeploy.json
deploymentTemplate
[-] Custom ParameterNaming (2ms)
Parameter 'location' must start with prefix 'tailwind'
Az eredmény azt jelzi, hogy a teszt működik. Ellenőrizzük ezt az üzembe helyezési fájl módosításával.
A sablonfájl kijavítása
Elérkezett arra a pontra, amikor az egyéni teszt helyességének ellenőrzéséhez úgy módosítja a sablonfájlt, hogy az megfeleljen az egyéni teszt által előírt szabályoknak.
Abban az Visual Studio Code-példányban, amelyben az azuredeploy-json fájl látható, módosítsa az alábbira a fájl tartalmát:
{ "$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": [] }
A névvel ellátott
location
paraméter átnevezve a következőretailwindLocation
: . Ennek a paraméternek elméletileg át kell mennie a teszten. Járjunk utána.Továbbra is ebben a Visual Studio Code-példányban maradva futtassa a
Test-AzTemplate
parancsot az integrált terminálban:Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
A kimenet most az alábbihoz hasonló:
Validating custom\azuredeploy.json deploymentTemplate [+] Custom ParameterNaming (2 ms)
Sikerült! Implementált és lefuttatott egy egyéni tesztet. Ki is javította az üzembe helyezési sablont, hogy az megfeleljen a teszt feltételének.
Egyéni teszt megírása és futtatása
Egyéni tesztet fog írni, majd a tesztelési eszközkészlet használatával futtatni. Az üzembe helyezési sablont is kijavítja, hogy az megfeleljen a teszten. Az egyéni teszt célja annak ellenőrzése lesz, hogy az összes paraméter követ-e egy elnevezési szabályt. Ez a szabály arra a termékre vonatkozó tartományspecifikus követelmény, amelyen a csapata dolgozik.
A gyakorlathoz ajánlott két szövegszerkesztőt megnyitni:
- Egyéni teszt írása. Keresse meg a tesztelési eszközkészlet telepítési könyvtárának arm-ttk\testcases\deploymentTemplate\ alkönyvtárának elérési útját. Innen fogja futtatni a Visual Studio Code-ot, ahol egy egyéni tesztet hoz létre és szerkeszt.
- Sablonfájl megírása és tesztek futtatása. Válasszon ki egy tetszőleges helyet elérési útként. Javasolt erről az elérési útról elindítani a Visual Studio Code egy példányát, hogy amikor szükséges, egyszerűen szerkeszthesse az azuredeploy.json fájlt. Indítson el egy integrált terminált ebben a Visual Studio Code-példányban, hogy egyszerűen futtathasson teszteket.
A sablonfájl létrehozása
Válasszon egy tetszőleges könyvtárt, és hozzon létre egy azuredeploy.json fájlt.
Figyelmeztetés
Ügyeljen rá, hogy a választott könyvtár üres legyen, alkönyvtárak nélkül.
A fájl tartalma legyen a következő:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": []
}
Az egyéni teszt létrehozása
Nyisson meg egy terminált.
Lépjen a tesztelési eszközkészlet telepítési könyvtárára.
Helyezze magát az arm-ttk\testcases\deploymentTemplate alkönyvtárba.
Futtassa az alábbi parancsot:
code .
Megjegyzés:
Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a könyvtárt.
Hozzon létre egy Custom-ParameterNaming.test.ps1 nevű fájlt, és töltse fel az alábbi tartalommal:
param( [Parameter(Mandatory=$false,Position=0)] #not mandatory for case of an empty resource array [PSObject] $MainTemplateResources ) Write-Error "To be implemented"
Hagyja megnyitva a szövegszerkesztőt. Ezt a fájlt később még szerkeszteni fogja.
Az egyéni teszt futtatása
Futtassa az egyéni tesztet az alábbi lépések végrehajtásával:
Nyisson meg egy új terminálablakot, vagy használja újra az előzőt.
Lépjen arra a könyvtárra, ahol létrehozta az azuredeploy.json fájlt.
Futtassa az alábbi parancsot a Visual Studio Code elindításához:
code .
Megjegyzés:
Ha a Visual Studio Code nem található az elérési úton, nyissa meg manuálisan a Visual Studio Code-ot, és nyissa meg a sablonkönyvtárt.
A Visual Studio Code-ból nyissa meg az integrált terminált. Nyissa meg a parancskatalógust, írja be a PowerShell szót, és válassza az Integrált terminál megjelenítése lehetőséget.
Futtassa az alábbi parancsot a terminálban:
Megjegyzés:
A modul importálása előtt a path\to\arm-ttk\arm-ttk.psd1 útvonal helyére írja be a letöltött tesztelési eszközkészlet elérési útját.
Import-Module path\to\arm-ttk\arm-ttk.psd1
Tipp.
Ha letöltötte vagy klónozta az eszközt a Letöltések könyvtárba, az elérési út a következőhöz hasonlóan fog kinézni: C:\Users\<user>\Downloads\arm-ttk\arm-ttk\arm-ttk.psd1.
Most már készen áll az eszköz használatára. Amíg ebben a PowerShell-munkamenetben marad, nem kell újra futtatnia az importálási parancsot.
Futtassa az
Test-AzTemplate
parancsot a terminálban:Test-AzTemplate -TemplatePath .
A kimenet a következőhöz hasonló. Figyelje meg, hogy a kiemelt vonalak a tesztet mutatják:
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
Miután megtalálta a tesztet, hagyja megnyitva ezt a terminálablakot. Később még használni fogja.
Az egyéni teszt újrabontása
Most az egyéni teszt helyes megvalósítása következik.
Térjen vissza a Custom-ParameterNaming.test.ps1 fájlt tartalmazó szövegszerkesztőhöz.
Megjegyzés:
Ha véletlenül bezárta a Visual Studio Code-ot, lépjen a testcases/deploymentTemplate alkönyvtárra, és nyissa meg a Custom-ParameterNaming.test.ps1 fájlt.
Cserélje le a fájl tartalmát a következő kódra:
<# .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 } }
A fenti kód végiglépked az összes paraméteren. Megvizsgálja az
name
attribútumot, és ellenőrzi, hogy a név az előtaggaltailwind
kezdődik-e. Ha a vizsgált paraméter nem felel meg az elnevezési szabálynak, a kód ezután egy megfelelő hibaüzenettel hívja meg aWrite-Error
parancsmagot.
A sablonfájl módosítása
Most egy paramétert fog felvenni a sablonfájlba.
Az azuredeploy.json fájlt tartalmazó szövegszerkesztőben módosítsa a fájlt tartalmát az alábbira:
{ "$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": [] }
Az előző sablontartalmak olyan paramétert
location
határoznak meg, amely nem felel meg az elnevezési szabálynak, mert hiányzik belőle aztailwind
előtag.
A tesztelési eszközkészlet újrafuttatása
Ezen a ponton már van egy megírt egyéni tesztje. A sablonfájl elnevezései azonban nem tesznek eleget a követelménynek. Emiatt a következő tesztfuttatás várhatóan sikertelen lesz. Győződjön meg erről a következő lépés végrehajtásával.
Használja a már megnyitott Visual Studio Code-beli integrált terminálablakot, amelyben elindította a PowerShellt, és importálta a tesztelési eszközkészletet.
A Visual Studio Code-ban futtassa a Test-AzTemplate
parancsot az integrált terminálból:
Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
Az előző parancs a paraméterrel -Test
fut, amely bemenetként egy tesztnevet vesz fel. Paraméterként adta meg Custom-ParameterNaming
, ami azt jelenti, hogy csak az újonnan kifejlesztett teszt lesz futtatva.
Tipp.
Ajánlott a tesztek fejlesztése során ezt a paramétert használni, mivel ez korlátozza a futtatandó fájlokat és a terminálon keletkező kimenet mennyiségét.
Ennek a parancsnak az alábbi kimenet az eredménye:
Validating custom\azuredeploy.json
deploymentTemplate
[-] Custom ParameterNaming (2ms)
Parameter 'location' must start with prefix 'tailwind'
Az eredmény azt jelzi, hogy a teszt működik. Ellenőrizzük ezt az üzembe helyezési fájl módosításával.
A sablonfájl kijavítása
Elérkezett arra a pontra, amikor az egyéni teszt helyességének ellenőrzéséhez úgy módosítja a sablonfájlt, hogy az megfeleljen az egyéni teszt által előírt szabályoknak.
Abban az Visual Studio Code-példányban, amelyben az azuredeploy-json fájl látható, módosítsa az alábbira a fájl tartalmát:
{ "$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": [] }
A névvel ellátott
location
paraméter átnevezve a következőretailwindLocation
: . Ennek a paraméternek elméletileg át kell mennie a teszten. Járjunk utána.Továbbra is ebben a Visual Studio Code-példányban maradva futtassa a
Test-AzTemplate
parancsot az integrált terminálban:Test-AzTemplate -TemplatePath . -Test Custom-ParameterNaming
A kimenet most az alábbihoz hasonló:
Validating custom\azuredeploy.json Custom ParameterNaming [+] Custom ParameterNaming (9 ms)
Sikerült! Implementált és lefuttatott egy egyéni tesztet. Ki is javította az üzembe helyezési sablont, hogy az megfeleljen a teszt feltételének.