2014-12-17 10 views
2

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

Шаги тестов и ожидаемый результат перечислены в правильном порядке, как показано на MTM, но результат шага и сообщение об ошибке, похоже, перегруппированы для всего тестового примера, который я извлекаю. Это мой код, пожалуйста, помогите.

foreach (ITestSuiteEntry testcase in ts.TestCases) 
{ 
    var testResults = testProject.TestResults.ByTestId(testcase.TestCase.Id); 
    foreach (ITestCaseResult result in testResults) 
    { 
     for (int actionIndex = 0; actionIndex < testcase.TestCase.Actions.Count; actionIndex++) 
     { 
      resultData = new TestResultData(); 
      var actionStep = testcase.TestCase.Actions[actionIndex] as ITestStep; 
      if (actionStep != null) 
      { 
       resultData.TestCaseName = result.TestCaseTitle; 
       resultData.Step = Regex.Replace(actionStep.Title, @"<[^>]+>|&nbsp;", "").Trim(); 
       resultData.ExpectedResult = Regex.Replace(actionStep.ExpectedResult, @"<[^>]+>|&nbsp;", "").Trim(); 
      } 
      var topIteration = result.Iterations.FirstOrDefault(); 
      if (topIteration != null && actionIndex < topIteration.Actions.Count) 
      { 
       var actionResult = topIteration.Actions[actionIndex]; 
       resultData.StepOutcome = actionResult.Outcome.ToString(); 
       resultData.Comment = actionResult.ErrorMessage; 
       foreach (var attachment in actionResult.Attachments) 
       { 
        resultData.AttachmentName = attachment.Name; 
        resultData.AttachmentUri = attachment.Uri.ToString(); 
       } 
      } 
      resultDataList.Add(resultData); 
     } 
    } 
} 
+0

Я подозреваю, что вы должны использовать 'topIteration.Actions.FirstOrDefault (результат => result.ActionId == actionstep.Id)'Не каждый шаг может иметь связанный с ним результат. – jessehouwing

+0

Большое вам спасибо! который работал как шарм. У меня есть еще один вопрос: я понимаю, что привязки могут быть связаны с этапом тестового теста, а также с тестовым примером. Я могу получить вложения, связанные с результатами тестирования. Не могли бы вы рассказать мне, как я могу получить вложения, связанные с тестовым случаем. Большое вам спасибо за ваше время. – Div

ответ

2

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

topIteration.Actions.FirstOrDefault(result => result.ActionId == actionstep.Id) 

Чтобы загружать вложения из TestCases, вам нужно использовать WorkItemStore класс скачать рабочий элемент, а затем использовать WebClient для загрузки отдельных файлов:

var workItemStore = teamProjectCollection.GetService<WorkitemStore>(); 
var workItem = workItemStore.GetWorkItem(testcaseId) 

foreach (Attachment attachment in workItem.Attachments) 
{ 
    var client = new WebClient(); 
    client.DownloadFile(attachment.Uri, attachment.Name); 
}