没有从TFS API获得测试用例结果(传递/失败/阻止)

时间:2016-09-26 15:13:48

标签: c# tfs

我试图在tfs api中获取测试用例的结果

在测试用例管理器中我看到了这个结果: https://gyazo.com/72ccfcef96d1718907ea702d7a8bbfc9

但是当我尝试在我的测试用例中获得此结果时,我无法获得任何结果:

var testResults = project.TestResults.ByTestId(7987);
foreach (var result in testResults)
{
    var topIteration = result.Iterations.FirstOrDefault();
    if (topIteration == null)
        continue;
    // do something
}

因为topIteration总是等于null。

如何从tfs api获得正确的结果(通过/失败/阻止)?

2 个答案:

答案 0 :(得分:0)

根据您的代码,您似乎希望使用TFS API 检索特定测试用例的测试结果。您可以尝试按照以下步骤来实现您的需求。

连接到TFS服务器/集合/团队项目

Uri tfsUri = new Uri("http://servername:8080/tfs/collectionname");
teamProjectCollection = new TfsTeamProjectCollection(tfsUri);

iTestManagementService = teamProjectCollection.GetService<ITestManagementService>();
tfsConnectedTeamProject = iTestManagementService.GetTeamProject("Team Project Name");

连接到TFS服务器后,调用API以获取任何特定测试用例的测试结果。下面的代码行将获得与传递的测试用例ID相关联的所有结果,并且此返回的列表未排序

var testResults = tfsConnectedTeamProject.TestResults.ByTestId(7987);

然后,您可以使用LastUpdated ITestCaseResult属性使用以下代码对此进行排序,它将返回测试结果的排序列表。

var resSort = from res in testResults
orderby res.LastUpdated descending
select res;

如果您只需要结果收集的最新测试结果,那么下面是代码。使用上面的排序列表并检索最顶层的记录。

var latestTestResult = resSort.First<ITestCaseResult>();

答案 1 :(得分:0)

检查以下代码:

TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("url"));
tfs.EnsureAuthenticated();

IBuildServer tfsBuildServer = tfs.GetService<IBuildServer>();

IBuildDefinition buildDef = tfsBuildServer.GetBuildDefinition("TeamProject", "DefinitionName");

 var BuildUri = buildDef.LastBuildUri;

 ITestManagementService testManagement = (ITestManagementService)tfs.GetService(typeof(ITestManagementService));
 ITestManagementTeamProject testManagementTeamProject = testManagement.GetTeamProject("TeamProject");
 IEnumerable<ITestRun> testRuns = testManagementTeamProject.TestRuns.ByBuild(BuildUri);


   foreach (ITestRun testRun in testRuns)
     {
       foreach (ITestCaseResult result in testRun.QueryResults())
          {
            Console.WriteLine(string.Format("TestCaseID:{0}", result.TestCaseTitle.ToString()));
            Console.WriteLine(string.Format("TestCaseOutcome:{0}", result.Outcome.ToString()));
           }
      }