我在Powershell 2.0中使用PSUnit进行测试。因为我的测试需要连接到数据库服务器,所以我希望能够将服务器和数据库名称传递到测试脚本中。这样,开发人员就可以在本地机器上使用本地数据库运行测试脚本,同时也可以在服务器上运行测试脚本。数据库也可能根据环境而变化。
PSUnit。运行脚本似乎不允许您在测试脚本名称中包含参数。我错过什么了吗?有解决这个问题的方法吗?
谢谢!
我能够找到做到这一点的唯一方法是在我的测试脚本的开始处包含标记,然后搜索并替换这些标记的正确值。例如,在我的例子中,我的测试脚本在脚本的顶部包含了以下代码:
[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"
}
您必须记住每次用原始版本覆盖您的测试脚本,否则它将包含您在上次运行中使用的值,而不是标签,并且您将无法更改值。
为什么不直接包含两个变量([string]$ServerName
&[string]$TargetDatabaseName
)在'profile中。Ps1 ' file &在您的测试用例中使用它们。您可以在ps1文件中随时配置它们。
这似乎更容易&