You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pester测试框架编写小型测试函数?

Pester 测试 SaveStudent 函数实现方案

前置条件

  • 已安装Pester测试框架,可执行Install-Module Pester -Force -SkipPublisherCheck完成安装
  • 待测试的SaveStudent函数已保存为独立的.ps1脚本,比如命名为StudentFunc.ps1

测试实现步骤

  1. 新建测试脚本,命名必须符合*.Tests.ps1规范,比如StudentFunc.Tests.ps1,Pester会自动识别该格式文件为测试脚本
  2. 在测试脚本开头导入待测试的函数,编写测试用例覆盖SaveStudent的两个核心行为:返回值与输入一致、输出日志包含对应学生邮箱
  3. 完整测试代码示例:
BeforeAll {
    # 导入同目录下的待测试函数脚本
    . $PSScriptRoot/StudentFunc.ps1
}

Describe "SaveStudent 功能测试" {
    It "正常入参下返回的学生对象与输入完全一致" {
        # 构造测试用例数据
        $inputStudent = [PSCustomObject]@{
            Name = "测试用户"
            Email = "test@demo.com"
            Id = "2024001"
        }

        $output = SaveStudent -Student $inputStudent
        # 断言返回值符合预期
        $output | Should -Be $inputStudent
    }

    It "正常入参下输出包含学生邮箱的日志" {
        $testMail = "zhangsan@school.com"
        $inputStudent = [PSCustomObject]@{
            Email = $testMail
        }

        # 捕获Write-Host输出(Pester 5+支持直接捕获Information流)
        $log = SaveStudent -Student $inputStudent 6>&1
        # 断言日志内容正确
        $log | Should -Be "save student email for $testMail"
    }
}
  1. 执行测试,在PowerShell终端运行命令Invoke-Pester -Path ./StudentFunc.Tests.ps1即可看到测试结果

注意事项

  • 如果你使用的是Pester 4及更早版本,无法直接捕获Write-Host输出,需要用Mock方式验证调用,示例如下:
# Pester 4 版本的日志验证写法
Mock Write-Host {} -ParameterFilter { $Message -eq "save student email for $testMail" }
SaveStudent -Student $inputStudent
Should -Invoke Write-Host -Exactly 1 -Scope It
  • 可根据业务需求补充边界测试用例,比如入参Student为null、Student.Email为空的场景,验证函数的容错行为是否符合预期
  • 不要在不同的It测试块之间共享变量,保证每个测试用例的独立性,避免测试结果互相干扰
  • 如果函数后续扩展了持久化逻辑(比如写入数据库、文件),需要用Mock屏蔽外部依赖,只测试函数本身的逻辑

内容的提问来源于stack exchange,提问作者kitten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 22:36:03