我在Powershell 2.0中使用PSUnit进行测试。因为我的测试需要连接到数据库服务器,所以我希望能够将服务器和数据库名称传递给测试脚本。这将允许开发人员使用本地数据库在其本地计算机上运行测试脚本,同时可以在服务器上运行它。数据库也可能根据环境而变化。
PSUnit.Run脚本似乎不允许您在测试脚本名称中包含参数。我错过了什么吗?有解决方法吗?
谢谢!
答案 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配置文件。