Powershell - скрипт для переноса тестовых случаев из TFS в Azure DevOps - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь перенести тестовые случаи для конкретного проекта из TFS в Azure DevOps с помощью сценария. Тем не менее, он выбирает контрольные примеры из всех проектов, хотя я указал один проект.

$VerbosePreference = "Continue"

$tfsSource="http://tfsportal.lionbridge.com/tfs/TFSCollection01";
$tpSource="VDB";

$tfsDest="https://liox-teams.visualstudio.com";
$tpDest="TestCaseMigrationTest";

Add-Type -Path "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.Client.dll"
Add-Type -Path "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.TestManagement.Client.dll"

[Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.Client')
[Reflection.Assembly]::LoadWithPartialName('Microsoft.TeamFoundation.TestManagement.Client')
[Reflection.Assembly]::LoadFile("C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\PrivateAssemblies\Newtonsoft.Json.9.0.0.1\Newtonsoft.Json.dll")

$sourceTpc = [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsSource)
[switch] $refresh
$sourceTcm = $sourceTpc.GetService([Microsoft.TeamFoundation.TestManagement.Client.ITestManagementService])

$sourceProject = $sourceTcm.GetTeamProject($tpSource);

$sourceTestCases = $sourceProject.TestCases.
$sourceTestCases = $sourceProject.TestCases.Query("SELECT * FROM WorkItem");


$destTpc= [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($tfsDest)
[switch] $refresh
$destTcm = $destTpc.GetService([Microsoft.TeamFoundation.TestManagement.Client.ITestManagementService])
$destProject = $destTcm.GetTeamProject($tpDest);

foreach ($tc in $sourceTestCases)
{

    Write-Verbose ("Copying Test Case {0} - {1} :- {2}" -f $tc.Id, $tc.WorkItem.AreaPath, $tc.Title)
    $destTestCase= $destProject.TestCases.Create();
    $destTestCase.Title = $tc.Title;
    $destTestCase.Priority = $tc.Priority;
    $destTestCase.State = $tc.State
    $destTestCase.Reason = $tc.Reason

    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);

            }
    $destTestCase.Save();
}

1 Ответ

0 голосов
/ 10 июля 2019

Я бы предложил вам написать запрос Where при запросе рабочего элемента.

WHERE [System.TeamProject] = '" + teamProject.Name

Вы можете добавить Where project = '@Project' к запросу, чтобы ограничить область действия только этим проектом. Сначала позвонив по номеру BeginQuery, а затем EndQuery, вы получите workitem коллекцию только тех предметов, которые искали.

Самый простой способ получить требуемый запрос wql - создать запрос в Team Explorer, а затем использовать файл-> сохранить как (в режиме редактирования), чтобы сохранить его в файл. Откройте этот файл в блокноте, чтобы скопировать запрос оттуда.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...