Pester 테스트: v4에서 v5로 이동
어쩌면 다른 사람도 이 정보가 유용하다고 생각할 것입니다 😄.
전제
2019년 6월부터 파이프라인의 결과를 확인하기 위해 PowerShell로 작성된 GDBC 테스트를 사용하는 Pester에 대한 파이프라인이 있습니다. 우리는 Azure 및 Azure DevOps에서 (많은) 리소스를 만들고 실제로 존재하는지 확인하려고 합니다.
Azure DevOps의 PowerShell 작업 내에서 테스트를 실행하고 다음을 사용하여 Pester 모듈을 설치합니다.
Install-Module -Name Pester -Force -SkipPublisherCheck
Import-Module Pester
이것은 물론 최신 버전을 설치합니다. 다른 환경으로 물건을 옮긴 후 한동안 테스트를 건너뛰고(우!) 어제 다시 테스트를 추가하기로 결정했습니다. 그리고 보라: 더 이상 작동하지 않는 것들.
까다로운 부분은 전달해야 하는 매개변수를 포함하는 Pester 파일로 작업을 수행하는 것이었습니다.
Pester 파일에 매개변수가 있습니다.
param (
[string] $region,
[string] $pathToJson,
[string] $runDirectory
)
필요한 매개변수:
설정하려면 사용할 몇 가지 값으로 매개변수를 설정해야 합니다.
$region="LocalDevOpsBootcamp"
$dataFilePath="c:\temp"
$datafilename="data-999.json"
페스터 4.0
이전 버전의 Pester에서는 Pester를 호출하고 Data
개체를 추가하여 변수 값을 전달했습니다.
Invoke-Pester
-Script 'GDBC-AzureDevopsProvisioning.Tests.ps1'
-Data = @{
region = '$region';
pathToJson = '$dataFilePath/$datafilename';
runDirectory = 'AzureDevOps-provisioning' }
-OutputFile Test-Pester.XML
-OutputFormat NUnitXML
v5에 대해 v4 설정을 실행하는 동안 오류가 발생했습니다.
버전 5에서 다음과 같은 경고/오류가 발생했습니다.
WARNING: You are using Legacy parameter set that adapts Pester 5 syntax to Pester 4 syntax. This parameter set is deprecated, and does not work 100%. The -Strict and -PesterOption parameters are ignored, and providing advanced configuration to -Path (-Script), and -CodeCoverage via a hash table does not work. Please refer to https://github.com/pester/Pester/releases/tag/5.0.1#legacy-parameter-set for more information.
System.Management.Automation.RuntimeException: No test files were found and no scriptblocks were provided.
at Invoke-Pester<End>, C:\Program Files\WindowsPowerShell\Modules\Pester\5.2.1\Pester.psm1: line 5082
at <ScriptBlock>, D:\a\_temp\272537fd-8fdd-42fc-b176-803d9ca859d6.ps1: line 7
at <ScriptBlock>, <No file>: line 1
페스터 5.*
이것은 내가 알아내는 데 오래 걸렸던 부분입니다. Invoke-Pester -Container $container
를 호출하여 컨테이너와 함께 Pester를 실행하고 테스트에 전달할 매개변수를 추가할 수 있습니다.
그것이 1단계입니다.
설정도 추가하려면 구성에서 컨테이너를 래핑해야 합니다!
따라서 단계는 다음과 같습니다.
Install-Module -Name Pester -Force -SkipPublisherCheck
Import-Module Pester
param (
[string] $region,
[string] $pathToJson,
[string] $runDirectory
)
설정하려면 사용할 몇 가지 값으로 매개변수를 설정해야 합니다.
$region="LocalDevOpsBootcamp"
$dataFilePath="c:\temp"
$datafilename="data-999.json"
페스터 4.0
이전 버전의 Pester에서는 Pester를 호출하고 Data
개체를 추가하여 변수 값을 전달했습니다.
Invoke-Pester
-Script 'GDBC-AzureDevopsProvisioning.Tests.ps1'
-Data = @{
region = '$region';
pathToJson = '$dataFilePath/$datafilename';
runDirectory = 'AzureDevOps-provisioning' }
-OutputFile Test-Pester.XML
-OutputFormat NUnitXML
v5에 대해 v4 설정을 실행하는 동안 오류가 발생했습니다.
버전 5에서 다음과 같은 경고/오류가 발생했습니다.
WARNING: You are using Legacy parameter set that adapts Pester 5 syntax to Pester 4 syntax. This parameter set is deprecated, and does not work 100%. The -Strict and -PesterOption parameters are ignored, and providing advanced configuration to -Path (-Script), and -CodeCoverage via a hash table does not work. Please refer to https://github.com/pester/Pester/releases/tag/5.0.1#legacy-parameter-set for more information.
System.Management.Automation.RuntimeException: No test files were found and no scriptblocks were provided.
at Invoke-Pester<End>, C:\Program Files\WindowsPowerShell\Modules\Pester\5.2.1\Pester.psm1: line 5082
at <ScriptBlock>, D:\a\_temp\272537fd-8fdd-42fc-b176-803d9ca859d6.ps1: line 7
at <ScriptBlock>, <No file>: line 1
페스터 5.*
이것은 내가 알아내는 데 오래 걸렸던 부분입니다. Invoke-Pester -Container $container
를 호출하여 컨테이너와 함께 Pester를 실행하고 테스트에 전달할 매개변수를 추가할 수 있습니다.
그것이 1단계입니다.
설정도 추가하려면 구성에서 컨테이너를 래핑해야 합니다!
따라서 단계는 다음과 같습니다.
Invoke-Pester
-Script 'GDBC-AzureDevopsProvisioning.Tests.ps1'
-Data = @{
region = '$region';
pathToJson = '$dataFilePath/$datafilename';
runDirectory = 'AzureDevOps-provisioning' }
-OutputFile Test-Pester.XML
-OutputFormat NUnitXML
WARNING: You are using Legacy parameter set that adapts Pester 5 syntax to Pester 4 syntax. This parameter set is deprecated, and does not work 100%. The -Strict and -PesterOption parameters are ignored, and providing advanced configuration to -Path (-Script), and -CodeCoverage via a hash table does not work. Please refer to https://github.com/pester/Pester/releases/tag/5.0.1#legacy-parameter-set for more information.
System.Management.Automation.RuntimeException: No test files were found and no scriptblocks were provided.
at Invoke-Pester<End>, C:\Program Files\WindowsPowerShell\Modules\Pester\5.2.1\Pester.psm1: line 5082
at <ScriptBlock>, D:\a\_temp\272537fd-8fdd-42fc-b176-803d9ca859d6.ps1: line 7
at <ScriptBlock>, <No file>: line 1
이것은 내가 알아내는 데 오래 걸렸던 부분입니다.
Invoke-Pester -Container $container
를 호출하여 컨테이너와 함께 Pester를 실행하고 테스트에 전달할 매개변수를 추가할 수 있습니다.그것이 1단계입니다.
설정도 추가하려면 구성에서 컨테이너를 래핑해야 합니다!
따라서 단계는 다음과 같습니다.
run
로 설정합니다.예시
# create a new container that will be executed
$container = New-PesterContainer
-Path './gdbc2019-provisioning/AzureDevOps-provisioning/GDBC-AzureDevopsProvisioning.Tests.ps1'
# include the parameters to pass into the Pester file
-Data @{
region = '$region';
pathToJson =
"$dataFilePath/$datafilename";
runDirectory = './gdbc2019-provisioning/AzureDevOps-provisioning'
}
# create a new configuration with our settings
$config = New-PesterConfiguration
$config.TestResult.OutputFormat = "NUnitXML"
$config.TestResult.OutputPath = "Test-Pester.XML"
# configure the run with the new container from step 1
$config.Run.Container = $container
# actually call Pester
Invoke-Pester -Configuration $config
자세한 내용은 여기에서 확인할 수 있습니다.
Reference
이 문제에 관하여(Pester 테스트: v4에서 v5로 이동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rob_bos/pester-tests-moving-from-v4-to-v5-1233텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)