如何将参数传递给PSUnit测试脚本?

时间:2011-07-27 15:20:30

标签: powershell psunit

我在Powershell 2.0中使用PSUnit进行测试。因为我的测试需要连接到数据库服务器,所以我希望能够将服务器和数据库名称传递给测试脚本。这将允许开发人员使用本地数据库在其本地计算机上运行测试脚本,同时可以在服务器上运行它。数据库也可能根据环境而变化。

PSUnit.Run脚本似乎不允许您在测试脚本名称中包含参数。我错过了什么吗?有解决方法吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我能够找到的唯一方法是在测试脚本的开头包含标签,然后搜索并替换正确的值来代替这些标签。例如,在我的情况下,我的测试脚本在脚本的顶部包含了这段代码:

[string]$ServerName=<ServerName>
[string]$TargetDatabaseName=<TargetDatabaseName>

这是文字代码。然后,在我调用测试的脚本中,我包含了这段代码:

foreach ($testPSScript in Get-ChildItem "$testScriptDir\*.ps1") {
    (Get-Content $testPSScript.FullName) |
    ForEach-Object {$_ -replace "<ServerName>", "'$ServerName'"} |
    ForEach-Object {$_ -replace "<TargetDatabaseName>", "'$DatabaseName'"} |
    Set-Content $testPSScript.FullName -Force

    PSUnit.Run.ps1 -PSUnitTestFile "$testPSScript"
}

您必须记住每次都使用原始版本覆盖您的测试脚本,否则它将包含您在上次运行时使用的值而不是标记,您将无法更改值

答案 1 :(得分:0)

为什么不在'profile.ps1'文件中添加2个变量([string]$ServerName&amp; [string]$TargetDatabaseName)&amp;在您的测试用例中使用这些。这些将在那里可用,您可以随时在ps1文件中配置它们。

这似乎更容易&amp;比为此任务编写单独的脚本更直观。

只需将任何此类信息附加到PowerShell配置文件。