PowerShell Pester - Code Coverage

简介:

今天继续学习Pester,invoke-pester有一个很nb的选项叫codeCoverage,可以指定需要测试的脚本,function甚至某一个片段的范围,然后他会告诉你这个范围内的功能是否都测试过了。


来个实例看看,豆子直接在上一篇的脚本里面添加了一个switchtest的function,然后测试了其中一个if的功能


Test.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
$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语句的还有一个分支我没有测试


wKioL1djhKKAg25VAADEhJ8ZYGY621.png


改变一下脚本的范围,只测试16-18行的内容,那么最后报告表示选择范围的功能已经100%测试过了

wKioL1djhX2D2nmWAAC5exxYP4o607.png






本文转自 beanxyz 51CTO博客,原文链接:http://blog.51cto.com/beanxyz/1790262,如需转载请自行联系原作者

目录
相关文章
|
1月前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
39 0
|
2月前
|
Windows
Powershell 重新排列去重 Windows环境变量
【9月更文挑战第13天】本文介绍如何使用PowerShell对Windows环境变量进行重新排列和去重。首先通过`$env:`访问环境变量,接着使用`-split`命令分割路径,再利用`Select-Object -Unique`去除重复项。之后可根据需要对路径进行排序,最后将处理后的路径组合并更新环境变量。注意修改环境变量前应备份重要数据并了解潜在影响。
127 10
|
6月前
|
存储 Ubuntu Linux
windows可以安装Ubuntu,ubuntu上也可以安装Powershell
powerhsell除了可以在windows上使用外,还可以在Ubuntu上部署开发环境。下面介绍Ubuntu上安装powershell的方法。
203 0
|
Shell Linux 开发工具
windows中cmd和PowerShell批处理命令
之前在 Git 批量删除本地分支,有用到 Linux 或 MacOS 下的批处理命令,这个命令中的 grep、xargs 本身是 Shell script,在 windows 中的 cmd 和 PowerShell 中是不能用的
101 0
|
JavaScript Windows
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
|
Windows
使用PowerShell获取Windows当前锁屏壁纸
使用PowerShell获取Windows当前锁屏壁纸 如果原始图片丢了,用这段代码就可以提取当前锁屏壁纸了!
183 0
|
应用服务中间件 nginx Windows
Windows PowerShell 中启动 Nginx 报错解决方案
Windows PowerShell 中启动 Nginx 报错解决方案
Windows PowerShell 中启动 Nginx 报错解决方案
|
XML 监控 数据格式
利用powershell进行windows日志分析
0x00 前言   Windows 中提供了 2 个分析事件日志的 PowerShell cmdlet:一个是Get-WinEvent,超级强大,但使用起来比较麻烦;另一个是Get-EventLog,使得起来相当简单,可以实时筛选,接下来,我们利用PowerShell 来自动筛选 Windows 事件日志。
2526 0
下一篇
无影云桌面