Click here to Skip to main content
14,972,394 members
Articles / DevOps / TFS
Tip/Trick
Posted 18 May 2019

Stats

2.9K views

Retrieving TFS test case parameters using C#

Rate me:
Please Sign up or sign in to vote.
5.00/5 (1 vote)
18 May 2019CPOL1 min read
Retrieving TFS test case parameters using C#

Introduction

This is a quick tutorial on how to retrieve TFS test case parameter values using C#. 

Background

If your project is connected to TFS and for some reason you need to access the values of parameters defined in one or more testcases you need to add Microsoft.TeamFoundationServer.ExtendedClient NuGet package to your solution. It provides the functionality you need to retrieve info from TFS.

Using the code

The code below is a console application that connects to the TFS server, finds the "My Project" project and prints out the values of the parameters for the test case with id = 3 (see below).Image 1

using System;
using System.Data;
using System.Collections.Generic;
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Framework.Common;
using Microsoft.TeamFoundation.TestManagement.Client;
 
namespace TfsParameters
{
    class Program
    {
        static void Main(string[] args)
        {
            var parameterValues = TfsManager.Instance.GetParamsValues(3);
            foreach(var row in parameterValues)
            {
                foreach (string value in row)
                {
                    Console.Write(value + "\t");
                }
                Console.WriteLine();
            }                
        }        
    }
 
    public class TfsManager
    {
        const string tfsUrl = "https://TfsServerAddress/";
        const string projectName = "My Project";
        private static ITestManagementTeamProject Project;
 
        private static Lazy<TfsManager> _instance = new Lazy<TfsManager>(() => new TfsManager());
        public static TfsManager Instance => _instance.Value;
 
 
        private TfsManager()
        {
            TfsTeamProjectCollection tfsCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri(tfsUrl));
            tfsCollection.Connect(ConnectOptions.IncludeServices);
 
            ITestManagementService tmService = tfsCollection.GetService<ITestManagementService>();
            Project = tmService.GetTeamProject(projectName);
        }
 
 
        public List<List<string>> GetParamsValues(int testCaseId)
        {
            List<List<string>> result = new List<List<string>>();
 
            ITestCase test = Project.TestCases.Find(testCaseId);
            DataTable parametersTable = test.DefaultTableReadOnly;
 
            foreach (DataRow dr in parametersTable.Rows)
            {
                var row = new List<string>();
                for (var i = 0; i < parametersTable.Columns.Count; i++)
                {
                    row.Add((string)dr[i]);
                }
                result.Add(row);
            }
 
            return result;
        }
    }
}

The TfsManager constructor takes care of the connection to the TFS server and initializes the Project object. The actual parameter values are retrieved by the GetParamsValues method, which first gets a reference to the test case with the specified ID and then gets the DefaultTableReadOnly data table. 

The strings in the table are saved in result and returned. Printing the result to console will output 

1234 how
2007 are
881 you

You can also retrieve the names of the parameters (MyNumberParam and MyStringParam) by using the ColumnName property 

C#
parametersTable.Columns[i].ColumnName

or check if there even are any parameters defined in the testcase by checking the number of elements in the TestParameters collection

TestParameterCollection params = test.TestParameters;

Ofcourse there is plenty more functionality that you might find useful provided by the ITestManagementService and ITestCase interfaces, but that is beyond the scope of this article.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

PlebProgrammer
Belarus Belarus
No Biography provided

Comments and Discussions

 
QuestionHow do you add new parameter values inside the test case? Pin
Nitin Bhatnagar10-Sep-19 20:56
MemberNitin Bhatnagar10-Sep-19 20:56 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.