我试图在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获得正确的结果(通过/失败/阻止)?
答案 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()));
}
}