PowerShell测试框架Pester 2


本文索引
[隐藏]

介绍

Pester提供了一个用来在PowerShell内部通过单元测试执行和验证PowerShell命令的框架。Pester遵循一个文件命名规范:命名的测试可以在测试时被自动发现,和一套简单的函数集,它为隔离,运行,评估和报告PowerShell命令结果暴露了一套DSL协议。

Pester可以执行能够被识别为pester测试文件中的任何命令和脚本。这包含了函数,命令,组件和脚本。Pester在控制台中以ad hoc风格运行。它能被集成到一个持续运行系统的开发脚本中。

Pester也包含了一个强大的模拟函数集,它允许测试模拟和仿制一段正在测试的PowerShell脚本内部任何命令的功能。

测试用例的编写

这是测试框架Pester内部的一个例子,位于Examples\Calculator目录下。比如我们写了一个产品脚本:Add-Numbers.ps1

function Add-Numbers($a, $b) {
    return $a + $b
}

然后针对产品中的函数Add-Number写一个测试脚本:Add-Numbers.Tests.ps1

$here = Split-Path -Parent $MyInvocation.MyCommand.Path
. "$here\Add-Numbers.ps1"

Describe -Tags "Example" "Add-Numbers" {

    It "adds positive numbers" {
        Add-Numbers 2 3 | Should Be 5
    }

    It "adds negative numbers" {
        Add-Numbers (-2) (-2) | Should Be (-4)
    }

    It "adds one negative number to positive number" {
        Add-Numbers (-2) 2 | Should Be 0
    }

    It "concatenates strings if given strings" {
        Add-Numbers two three | Should Be "twothree"
    }

    It "should not be 0" {
        Add-Numbers 2 3 | Should Not Be 0
    }
}

下载测试框架

可以在这里手动下载:Pester

也可以在PowerShell 3.0+的控制台上直接在线下载:

Invoke-WebRequest https://github.com/pester/Pester/archive/master.zip  -OutFile Pester-master.zip

在当前目录解压后,文件清单大致为:

PS D:\> cd .\Pester-master
PS D:\Pester-master> dir

    目录: D:\Pester-master

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----          2014/2/9     23:50            bin
d----          2014/2/9     23:50            en-US
d----          2014/2/9     23:50            Examples
d----          2014/2/9     23:50            Functions
d----          2014/2/9     23:50            ObjectAdaptations
d----          2014/2/9     23:50            templates
d----          2014/2/9     23:50            vendor
-a---          2014/2/9     23:50         65 .gitattributes
-a---          2014/2/9     23:50         32 .gitignore
-a---          2014/2/9     23:50        679 Build.bat
-a---          2014/2/9     23:50       1580 build.psake.ps1
-a---          2014/2/9     23:50       2226 CHANGELOG.md
-a---          2014/2/9     23:50        598 LICENSE
-a---          2014/2/9     23:50       1587 Pester.nuspec
-a---          2014/2/9     23:50       6836 Pester.psm1
-a---          2014/2/9     23:50       3605 README.md

运行测试用例

PS D:\Pester-master> .\bin\pester.bat

运行效果如下图:

pester 测试框架

pester 测试框架

调用顺序分析

pester.bat做了两件事情:

  1. 导入Pester.psm1组件
  2. 通过Invoke-Pester命令启动测试,测试结果日志输出至: Test.xml

它会将当前目录和子目录中所有的文件名包含.Tests.”的脚本文件自动搜索出来,执行测试。

本文链接: http://www.pstips.net/pester.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。


发表评论

电子邮件地址不会被公开。 必填项已用*标注

2 条评论 “PowerShell测试框架Pester