2016-09-07 6 views
1

Как получить результаты тестирования единицы сборки в TFS с помощью Rest API?Как получить результаты тестирования модулей с использованием TFS Rest API?

В определении построения используется VNext (обновление Visual Studio 2015 Update 3).

var vssConnection = new VssConnection(_configurationSpec.TeamProjectCollection, 
    new VssClientCredentials()); 
_buildClient = vssConnection.GetClient<BuildHttpClient>(); 
+0

Похоже, что вы можете получить журналы конкретной сборки (https://www.visualstudio.com/en-us/docs/integrate/api/build/builds#logs), но только на основе документации, не похоже, что вы можете получить только результаты теста :( – Sachi

ответ

3

Тест Результат сборки хранится в тестовых прогонов, поэтому вам нужно сначала выполнить тестовый запуск сборки, а затем извлечь результат теста из тестового прогона. Ниже приведен пример кода:

class Program 
{ 
    static void Main(string[] args) 
    { 
     string ur = "https://xxxxxxx/"; 
     TfsTeamProjectCollection ttpc = new TfsTeamProjectCollection(new Uri(ur)); 
     //Get build information 
     BuildHttpClient bhc = ttpc.GetClient<BuildHttpClient>(); 
     string projectname = "Project"; 
     int buildId = 1; 
     Build bui = bhc.GetBuildAsync(projectname,buildId).Result; 
     //Get test run for the build 
     TestManagementHttpClient ithc = ttpc.GetClient<TestManagementHttpClient>(); 

     Console.WriteLine(bui.BuildNumber); 

     QueryModel qm = new QueryModel("Select * From TestRun Where BuildNumber Contains '" + bui.BuildNumber + "'"); 

     List<TestRun> testruns = ithc.GetTestRunsByQueryAsync(qm,projectname).Result; 
     foreach (TestRun testrun in testruns) 
     { 

      List<TestCaseResult> testresults = ithc.GetTestResultsAsync(projectname, testrun.Id).Result; 
      foreach (TestCaseResult tcr in testresults) 
       { 
        Console.WriteLine(tcr.TestCase.Name); 
        Console.WriteLine(tcr.Outcome); 
       } 

      Console.ReadLine(); 
     } 
     Console.ReadLine(); 
    } 
} 
+0

Какая ссылка мне нужна? Я не могу их найти, это какой-то дополнительный пакет, который я должен установить, чтобы использовать это? я работаю с vs 2015 – Dom84

+0

@ Dom84 Установите пакеты nuget, упомянутые на этом сайте: https://www.visualstudio.com/en-us/docs/integrate/get-started/client-libraries/dotnet –

1

Вы можете попытаться получить журналы на стадии, связанные с использованием этого Rest API в Powershell скрипт.

GET https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/Fabrikam-Fiber-Git/_apis/build/builds/391/logs?api-version=2.0 

Он будет возвращать logs1, logs2 соответствует step1, step2.

{ 
    "count": 4, 
    "value": [ 
    { 
     "lineCount": 3, 
     "createdOn": "2015-07-16T19:53:19.747Z", 
     "lastChangedOn": "2015-07-16T19:53:19.92Z", 
     "id": 1, 
     "type": "Container", 
     "url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/6ce954b1-ce1f-45d1-b94d-e6bf2464ba2c/_apis/build/builds/391/logs/1" 
    }, 
    { 
     "lineCount": 113, 
     "createdOn": "2015-07-16T19:53:29.387Z", 
     "lastChangedOn": "2015-07-16T19:53:29.44Z", 
     "id": 2, 
     "type": "Container", 
     "url": "https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection/6ce954b1-ce1f-45d1-b94d-e6bf2464ba2c/_apis/build/builds/391/logs/2" 
    }, 

Например:

Просто нужно, чтобы получить журнал шага 4 "Test Ассамблей ..." enter image description here

+1

Любая идея, почему API вернет эту ошибку: {"$ id": "1", "innerException": null, " message ":" Этот API применим только к журналам, хранящимся в контейнере файлов. "," typeName ":" Microsoft.TeamFoundation.Build.WebApi.InvalidLogLocationException, Microsoft.TeamFoundation.Build2.WebApi, Version = 14.0.0.0, Culture = нейтраль, PublicKeyToken = b03f5f7f11d50a3a "," typeKey ":" InvalidLogLocationException "," errorCode ": 0," eventId ": 3000} – ShP

+0

@ShP Это хорошо работает на моей стороне, вы получите сводку журнала с каждым шагом сборки в определение сборки. И если вы хотите получить подробные журналы каждого шага, вам нужно добавить/logID после '/ logs' перед'? Api-version = 2.0'. Кажется, ваша проблема решена здесь: https://stackoverflow.com/questions/45743037/tfs-rest-api-not-working-for-logs –

+0

Вид, я могу получить почтовый индекс, но все еще получаю ошибку при попытке получить ответ json – ShP