Pester 테스트: v4에서 v5로 이동

4468 단어
이것은 알아내기 위해 많은 시행착오와 검색을 거쳐야 했기 때문에 나중에 필요할 경우를 대비하여 여기에 저장하고 싶었습니다.
어쩌면 다른 사람도 이 정보가 유용하다고 생각할 것입니다 😄.


전제



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단계입니다.

설정도 추가하려면 구성에서 컨테이너를 래핑해야 합니다!

따라서 단계는 다음과 같습니다.
  • 컨테이너 생성
  • 컨테이너에 매개 변수 및 테스트 파일을 추가합니다
  • .
  • 구성 만들기
  • 구성에 설정을 추가합니다
  • .
  • 구성
  • 에서 컨테이너를 run로 설정합니다.
  • Pester를 구성
  • 으로 실행

    예시




    # 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 
    
    


    자세한 내용은 여기에서 확인할 수 있습니다.
  • PesterConfiguration
  • Data driven tests with Pester
  • 좋은 웹페이지 즐겨찾기