本文共 1900 字,大约阅读时间需要 6 分钟。
今天继续学习Pester,invoke-pester有一个很nb的选项叫codeCoverage,可以指定需要测试的脚本,function甚至某一个片段的范围,然后他会告诉你这个范围内的功能是否都测试过了。
来个实例看看,豆子直接在上一篇的脚本里面添加了一个switchtest的function,然后测试了其中一个if的功能
Test.ps1
function add {param([int]$a,[int]$b)$sum=$a+$b$sum}function switchtest{param([switch]$switch)if($switch){return "Switch is On"}else{return "Switch is Off"}}
Test.tests.ps1
$here = Split-Path -Parent $MyInvocation.MyCommand.Path$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.Tests\.', '.'. "$here\$sut"Describe "Test" {Context "Should be test"{ It "Add 1 and 2 is equal to 3" { add 1 2 | Should Be 3 } It "Add -1 and 2 is not equal to 0" { add -1 2 | Should not Be 0 } It "Test Switch option"{ switchtest -switch | Should be "Switch is on" }}Context "Should BeExactly test"{ It "HostName" { hostname | Should beexactly "yli-ise" }}Context "Should BeGreaterThan test"{ It "PsVersion is above 3" { $PSVersionTable.PSVersion.Major | Should beGreaterThan 3 }}Context "Should beOfType test"{ It "Get-ADUser type"{ Get-aduser yli | Should beoftype Microsoft.ActiveDirectory.Management.ADUser }}Context "Should Exist test"{ It "C:\temp exist"{ "c:\temp" | should exist } }Context "Should match test"{ It "Find Email"{ "jksjsjsjssdjs abc.xyz@yahoo.com hsosofs" | should match "[a-z0-9!#\$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#\$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?" } }Context "Should Throw test" { It "Get a non-exist Process"{ {Get-Process -Name "!@#$%&" -ErrorAction Stop} | Should Throw }}Context "Should BeNullorEmpty test"{ It "Get something from test folder"{ get-childitem C:\temp | should not benullorempty }}}
执行看看,最后他告诉我在我指定的脚本里面,只完成了80%的测试,因为if语句的还有一个分支我没有测试
改变一下脚本的范围,只测试16-18行的内容,那么最后报告表示选择范围的功能已经100%测试过了
转载地址:http://dutea.baihongyu.com/