PowerShell Pester 使用 - Assertion

简介:

豆子之前初步了解了Pester的基本功能,今天继续看看。Pester里面有个很重要的概念叫 assertion (断言),他的作用是通过Should这个关键字 (function)来定义预测应该出现的结果。

这个shoud后面的操作符有以下几种

  • Be                      

  • BeExactly          

  • BeGreaterThan  

  • BeLessThan      

  • BeLike                

  • BeLikeExactly     

  • BeOfType           

  • Exist                    

  • Contain               

  • ContainExactly   

  • Match                  

  • MatchExactly      

  • Throw                  

  • BeNullOrEmpty   


下面这个链接有相关的wiki说明,有兴趣的可以看看

https://github.com/pester/Pester/wiki/Should



这些关键字操作符从名字都能猜的出是干啥的,下面给几个实例看看怎么用。

比如在一个test.ps1里面写一个简单求和功能


1
2
3
4
5
6
7
8
function  add {
param (
[int] $a ,
[int] $b
)
$sum = $a + $b
$sum
}


对应的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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
$here  Split-Path  -Parent  $MyInvocation .MyCommand.Path
$sut  = ( Split-Path  -Leaf  $MyInvocation .MyCommand.Path)  -replace  '\.Tests\.' '.'
"$here\$sut"
 
Describe  "Test"  {
 
#Shoud Be 比较结果是否一样,不区分大小写
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
     }
}
 
#should be Exactly 比较结果是否一样,区分大小写
Context  "Should BeExactly test" {
     It  "HostName"  {
         hostname | Should beexactly  "yli-ise"
     }
 
}
 
#Should BeGreaterThan判断得到的结果是否比预定值大
Context  "Should BeGreaterThan test" {
     It  "PsVersion is above 3"  {
         $PSVersionTable .PSVersion.Major | Should beGreaterThan 3
     }
 
}
 
#Should beoftype判断结果类型是否为指定类型
Context  "Should beOfType test" {
     It  "Get-ADUser type" {
         Get-aduser  yli | Should beoftype Microsoft.ActiveDirectory.Management.ADUser
     }
 
}
 
#Should Exist判断文件是否存在
Context  "Should Exist test" {
     It  "C:\temp exist" {
         "c:\temp"  | should exist
     }
      
}
 
 
#Should match 判断结果是否匹配正则表达式, 不区分大小写
 
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])?"
     }
      
}
 
 
#Should Throw 判断script block结果是否抛出异常
Context  "Should Throw test"  {
     It  "Get a non-exist Process"
     
         { Get-Process  -Name  "!@#$%&"  -ErrorAction Stop} | Should Throw
     }
}
 
 
#Should BeNulorEmpty 判断结果是否为空
Context  "Should BeNullorEmpty test" {
     It  "Get something from test folder" {
     
         get-childitem  C:\temp | should not benullorempty
     }
 
 
}
 
 
}


直接运行这个测试文件或者通过Invoke-pester执行,看看结果 成功

wKioL1diJY2h_F-OAAB0bHDsNck914.png






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

目录
相关文章
|
3月前
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
108 0
|
4月前
|
Windows
Powershell 重新排列去重 Windows环境变量
【9月更文挑战第13天】本文介绍如何使用PowerShell对Windows环境变量进行重新排列和去重。首先通过`$env:`访问环境变量,接着使用`-split`命令分割路径,再利用`Select-Object -Unique`去除重复项。之后可根据需要对路径进行排序,最后将处理后的路径组合并更新环境变量。注意修改环境变量前应备份重要数据并了解潜在影响。
148 10
|
8月前
|
存储 Ubuntu Linux
windows可以安装Ubuntu,ubuntu上也可以安装Powershell
powerhsell除了可以在windows上使用外,还可以在Ubuntu上部署开发环境。下面介绍Ubuntu上安装powershell的方法。
232 0
|
Shell Linux 开发工具
windows中cmd和PowerShell批处理命令
之前在 Git 批量删除本地分支,有用到 Linux 或 MacOS 下的批处理命令,这个命令中的 grep、xargs 本身是 Shell script,在 windows 中的 cmd 和 PowerShell 中是不能用的
127 0
|
JavaScript Windows
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
[Vue]解决 Windows PowerShell 不识别 vue 命令的问题
|
Windows
使用PowerShell获取Windows当前锁屏壁纸
使用PowerShell获取Windows当前锁屏壁纸 如果原始图片丢了,用这段代码就可以提取当前锁屏壁纸了!
203 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 事件日志。
2538 0