嗨,我有一个 powerShell 脚本,它将克隆一个带有从 TFS2012 到 VSTS 的参数的测试用例,但我无法克隆参数值。
第一部分仅标识两个项目的位置
$VerbosePreference = "Continue"
$tfsSource="http://server:8080/tfs/DefaultCollection/";
$tpSource="My Project in TFS";
$tfsDest="https://server.visualstudio.com:443";
$tpDest="My Project in VSTS";
[Reflection.Assembly]::LoadWithPartialName(‘Microsoft.TeamFoundation.Client’)
[Reflection.Assembly]::LoadWithPartialName (‘Microsoft.TeamFoundation.TestManagement.Client’)
[Reflection.Assembly]::LoadFile("C:Program Files (x86)Microsoft Visual Studio 14.0Common7IDEPrivateAssembliesNewtonsoft.Json.dll")
$sourceTpc = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsSource)
$sourceTcm = $sourceTpc.GetService([Microsoft.TeamFoundation.TestManagement.Client.ITestManagementService])
$sourceProject = $sourceTcm.GetTeamProject($tpSource);
#$sourceTestCases = $sourceProject.TestCases.Query(“SELECT * FROM WorkItem”);
$sourceTestCases = $sourceProject.TestCases.Query(“SELECT * FROM WorkItem where State = 'Ready' AND Title contains 'Parameter Test'");
$destTpc= [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsDest)
$destTcm = $destTpc.GetService([Microsoft.TeamFoundation.TestManagement.Client.ITestManagementService])
$destProject = $destTcm.GetTeamProject($tpDest);
#The next steps will copy the test case steps from old project to the new project
foreach ($tc in $sourceTestCases)
{
Write-Verbose ("Copying Test Case {0} - {1}" -f $tc.Id, $tc.Title)
$destTestCase= $destProject.TestCases.Create();
$destTestCase.Title = $tc.Title;
$destTestCase.Priority = $tc.Priority;
foreach ($step in $tc.Actions)
{
$destStep= $destTestCase.CreateTestStep();
$destStep.Title= $step.Title
$destStep.TestStepType= $step.TestStepType
$destStep.Description= $step.Description
$destStep.ExpectedResult= $step.ExpectedResult;
$destTestCase.Actions.Add($destStep);
}
#The next steps bring in the parameters. This is where the problem is.
foreach ($pv in $tc."Parameters")
{
$destpv= $destTestCase.CreateParameterValue();
$destpv."Parameter value"= $pv."Parameter value";
$destTestCase.Actions.Add($destpv);
}
$destTestCase.Save();
}
ITestCase ($tc) 中没有 Parameters 属性,而是使用以下代码来复制参数的数据:
#......
#The next steps bring in the parameters. This is where the problem is.
# foreach ($pv in $tc."Parameters")
#{
# $destpv= $destTestCase.CreateParameterValue();
# $destpv."Parameter value"= $pv."Parameter value";
# $destTestCase.Actions.Add($destpv);
#}
$ts = $tc.Data.Tables;
for($tri=0;$tri -lt $ts[0].Rows.Count;$tri++)
{
$newRow=$destTestCase.Data.Tables[0].NewRow()
foreach($tc in $ts[0].Columns)
{
$newRow[$tc.ColumnName]=$ts[0].Rows[$tri][$tc]
}
$destTestCase.Data.Tables[0].Rows.Add($newRow)
}
$destTestCase.Save();