VSTS - программный поиск рабочих элементов с ошибками, связанных с конкретным контрольным примером, с помощью .NET Client Library или REST API - PullRequest
0 голосов
/ 25 июня 2018

Я использую VSTS с git.

У меня есть тестовые наборы с множеством связанных с ними рабочих элементов ошибок.

Я хочу специально получить все рабочие элементы с ошибками, связанные с конкретным контрольным примером, используя .NET Client Library или VSTS REST API. Версия API REST может быть 4.0 или более поздней.

Я не смог найти информацию, относящуюся к извлечению рабочих элементов ошибок, связанных с конкретным тестовым примером, хотя есть информация, относящаяся к извлечению всех рабочих элементов ошибок.

Вот код, который я пробовал:

статический список GetLinkedWorkItems () { int [] workitemIds = new int [] {12697};

        //VssConnection connection = Context.Connection;
        VssConnection connection = new VssConnection(new Uri(vstsCollectionUrl), new VssClientCredentials());
        WorkItemTrackingHttpClient workItemTrackingClient = connection.GetClient<WorkItemTrackingHttpClient>();

        List<Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.WorkItem> workitems = workItemTrackingClient.GetWorkItemsAsync(workitemIds, expand: WorkItemExpand.Links | WorkItemExpand.Relations).Result;

        foreach (var workitem in workitems)
        {
            Console.WriteLine("Work item {0}", workitem.Id);

            if (workitem.Links != null)
            {
                foreach (var link in workitem.Links.Links)
                {
                    Console.WriteLine("  {0} {1}", link.Key, link.Value);
                }
            }
        }


        return workitems;
    }

Обратите внимание, что проблем с подключением к VSTS нет. Кроме того, я попытался использовать подход, основанный на запросах, как указано ниже, но безрезультатно:

        VssConnection connection = new VssConnection(new Uri(vstsCollectionUrl), new VssClientCredentials());

        //create http client and query for resutls
        WorkItemTrackingHttpClient witClient = connection.GetClient<WorkItemTrackingHttpClient>();

        Wiql query = new Wiql() { Query = "SELECT [Id], [Title], [State] FROM workitems WHERE [Work Item Type] = 'Test Case'" };
        WorkItemQueryResult queryResults = witClient.QueryByWiqlAsync(query).Result;

        //Display reults in console
        var l = queryResults.WorkItemRelations;
        var t = queryResults.WorkItems.Skip(0).Take(100);
        if (queryResults == null || queryResults.WorkItems.Count() == 0)
        {
            Console.WriteLine("Query did not find any results");
        }
        else
        {
            foreach (var item in queryResults.WorkItems)
            {
                Console.WriteLine(item.Id);
                Console.WriteLine(item.Url);
            }
        }

1 Ответ

0 голосов
/ 26 июня 2018

Итак, вам нужно обновить тестовый пример, удалив его связи для рабочих элементов с ошибками .И вы можете достичь этого с помощью обновления рабочего элемента REST API .Подробности, как показано ниже:

1.Получить рабочие элементы отношения для тестового примера

Использовать Получить REST API рабочего элемента :

GET https://account.visualstudio.com/project/_apis/wit/workitems/workitemID?$expand=all&api-version=4.1

2.Получить количество связанных рабочих элементов ошибок

Получить количество связанных рабочих элементов по ответу шага 1.Если связанный WIT является ошибкой, то количество отношений - это количество связанных ошибок.Предположим, что есть три ошибки, связанные только с тестовым набором.

3.Обновите контрольный пример, удалив связанные ошибки

Путь для удаления связанных рабочих элементов как /relations/index, а индекс основан на количестве, если связанные рабочие элементы начинаются с 0.Поэтому, если к тестовому сценарию связаны только три ошибки, вы можете удалить пути с помощью /relations/0, /relations/1 и /relations/2.

Обновить REST API рабочего элемента, как показано ниже:

PATCH https://account.visualstudio.com/project/_apis/wit/workitems/workitemID?api-version=4.1

application / json-patch + json:

[

  {
    "op": "remove",
    "path": "/relations/0"
  },
  {
    "op": "remove",
    "path": "/relations/1"
  }
  {
    "op": "remove",
    "path": "/relations/2"
  }

]
...