2017-03-23 9 views
2

최근 PowerShell에서 테스트를 작성하기 위해 Pester를 사용하기 시작했으며 기본 테스트를 실행하는 데 아무런 문제가 없지만 좀 더 복잡한 테스트를 작성하려고합니다. 필요한 변수로 무엇을해야하는지 고심하고 있습니다. 테스트를 위해.Pester 변수를 넣을 위치는 어디입니까?

일부 클라우드 인프라의 유효성을 검사하는 테스트가 있으므로 배포를 완료 한 후에는 올바르게 배포되었고 모든 것이 있어야한다고 확인합니다. 이 때문에 우리가 검증하고자하는 많은 수의 변수, VM 이름, 네트워크 이름, 서브넷 구성 등이 있습니다.

일반적인 PowerShell 스크립트에서는 스크립트 외부에 저장되어 매개 변수로 입력되지만 Pester 나 BDD 디자인에는 맞지 않습니다. 테스트 중에 이러한 변수를 코딩해야합니까? 이것은 매우 직관적 인 것처럼 보이지 않습니다. 특히 다른 환경에서이 테스트를 다시 사용하려는 경우에 특히 그렇습니다. 나는 이것을 외부 JSON 파일에 저장하고이를 테스트에 읽는 방법으로 실험을했지만, 그렇다고하더라도 스크립트에서 JSON 파일의 경로를 하드 코딩해야합니다. 아니면 내가 잘못하고 더 나은 접근 방식이 있습니까?

답변

2

이런 종류의 일에 대해 최선의 방침을 말할 수 있는지는 잘 모르겠지만 하루 종일 Pester 스크립트는 Powershell 스크립트이므로 테스트 중 및 주변에서 powershell을 수행해도 아무런 해가 없습니다. 일부 구조에는 자체 범위가 있음을주의하십시오.)

아마 스크립트의 상단에 PARAM 블록을 사용하고이 제안을 당 호출-훼방의 -script 매개 변수를 통해 변수를 전달합니다 : 날 "모범 사례"에 대한 말에 http://wahlnetwork.com/2016/07/28/using-the-script-param-to-pass-parameters-into-pester-tests/

pester 테스트 (특히 인프라 유효성 검사)는 매우 느슨하게 정의되거나 거의 존재하지 않습니다. 그 예는 정말 도움이됩니다

https://github.com/markwragg/Test-ActiveDirectory/blob/master/ActiveDirectory.tests.ps1

+1

감사합니다 : 예를 들어

, 내 Active Directory의 테스트 당신만큼 저장된 구성 파일에 대해 테스트 (부분적으로) 설명 스크립트에서 PARAM 블록을 사용 . 나는 적어도 완전히 잘못된 방향으로 나아 가지 않습니다. –

+2

동의합니다. 나는 모범 사례가 없어도 물건을 간단하게 유지하는 것이 가장 좋습니다. OVF 세계에서 논리와 테스트는 종종 혼합됩니다. 필자는 동적 인 작업 (config.json로드)을 수행하고 엄격한 테스트 방법을 사용하여 해당 기능을 테스트 할 수있는 일련의 기능을 빌드하도록 제안합니다. 그리고 여러분은 그 함수를 가져 와서> validation nohwnd

+0

@SamCogan FYI 나는이 질문을 twitter에서 pester 팀에게 트위터로 보내었고 위의 대답은 그들로부터 온 것이다. –