我正在尝试创建一个报告,其中包含在测试用例中执行的每个步骤的结果,并且我能够检索测试步骤,预期结果,步骤结果,错误消息,附件。
测试步骤和预期结果以正确的顺序列出,如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, @"<[^>]+>| ", "").Trim();
resultData.ExpectedResult = Regex.Replace(actionStep.ExpectedResult, @"<[^>]+>| ", "").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 :(得分: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);
}