public ulong CreateOrGetMilestone() { if (_client == null) { return(0); } var milestones = _client.GetMilestones(_testRailProjectId); if (milestones.Any(x => x.Name == _milestoneName)) { return(milestones.First(x => x.Name == _milestoneName).ID); } // Auto due +1 hour to make sure it wont stay actual forever var milestoneResult = _client.AddMilestone(1, _milestoneName); return(milestoneResult.Value); }
private void onTestExecutionBegin(TestExecutor testExecutor, TestExecutionBeginArgs args) { TestAssert.IsFalse(string.IsNullOrEmpty(args.TestScriptObject.UserID), ""); // Reset run time totals _totalRunTestCases = _totalRunTestSteps = _totalRunTestChecks = 0; // Create TestRail client. _testRailClient = new TestRailClient(_testRailUrl, _testRailUser, _testRailPassword); // Get applicable project _testRailProject = getTestRailProject(_testRailProjectName); // Project milestone var milestones = _testRailClient.GetMilestones(_testRailProject.ID); var milestone = milestones.Find(x => x.Name.Contains(_testRailProjectName) && x.Name.Contains(_productVersion)); // Create test run _testRailRun = addTestRailRun(_testRailProject, milestone, (TestSuite)args.TestScriptObject); }
static void Main(string[] args) { //PrintCasesDependency(); //return; var url = System.Configuration.ConfigurationManager.AppSettings["testRailUrl"]; var user = System.Configuration.ConfigurationManager.AppSettings["testRailUser"]; var apikey = System.Configuration.ConfigurationManager.AppSettings["testRailApiKey"]; client = new TestRailClient(url, user, apikey); var ezbobProject = client.Projects.FirstOrDefault(x => x.Name == "EZbob"); if (ezbobProject == null) { Console.WriteLine("Project EZbob was not found"); Console.WriteLine("Project are:"); foreach (var project in client.Projects) { Console.WriteLine("Project {0}, id {1}", project.Name, project.ID); } return; } Console.WriteLine("Project found: {0}, id: {1}", ezbobProject.Name, ezbobProject.ID); Console.WriteLine(); var configurationGroups = client.GetConfigurationGroups(ezbobProject.ID); List <Configuration> configs = new List <Configuration>(); foreach (var confGroup in configurationGroups) { Console.WriteLine("Configuration group: {0}, id {1}", confGroup.Name, confGroup.ID); foreach (var conf in confGroup.Configurations) { Console.WriteLine("\tConfiguration: {0} id {1}", conf.Name, conf.ID); } Console.WriteLine("select {0} configuration id:", confGroup.Name); input = Console.ReadLine(); ulong confID = 0; if (!ulong.TryParse(input, out confID)) { Console.WriteLine("wrong input"); return; } var selectedConf = confGroup.Configurations.FirstOrDefault(x => x.ID == confID); if (selectedConf != null) { configs.Add(selectedConf); } } var suites = client.GetSuites(ezbobProject.ID); foreach (var s in suites) { Console.WriteLine("suit: {0}, id: {1}", s.Name, s.ID); } Console.Write("Select suit id:"); input = Console.ReadLine(); ulong suitId = 0; if (!ulong.TryParse(input, out suitId)) { Console.WriteLine("wrong input"); return; } var suit = suites.FirstOrDefault(x => x.ID == suitId); if (suit == null || !suit.ID.HasValue) { Console.WriteLine("suit {0} not found", suitId); return; } var cases = client.GetCases(ezbobProject.ID, suit.ID.Value); foreach (var c in cases) { string labels = c.Labels.Any() ? c.Labels.Select(x => x.ToString()).Aggregate((a, b) => a + ", " + b) : ""; Console.WriteLine("case: {0}, id: {1} \n {2}", c.Title, c.ID, labels); } var milestones = client.GetMilestones(ezbobProject.ID); foreach (var m in milestones) { Console.WriteLine("milestone {0}, id {1}", m.Name, m.ID); } Console.Write("select milestone id:"); input = Console.ReadLine(); ulong milestoneId = 0; if (!ulong.TryParse(input, out milestoneId)) { Console.WriteLine("wrong input"); return; } var milestone = milestones.FirstOrDefault(x => x.ID == milestoneId); if (milestone == null) { Console.WriteLine("milestone {0} not found", milestoneId); return; } Console.Write("run all cases (Y/N):"); input = Console.ReadLine(); if (input != "Y" && input != "N") { Console.WriteLine("wrong input"); return; } if (input == "Y") { RunAllCases(ezbobProject, suit, milestone); } else { List <Label> labels = cases.SelectMany(x => x.Labels).Distinct().ToList(); foreach (var label in labels) { Console.WriteLine("label {0}, id {1}", label.ToString(), (int)label); } Console.WriteLine("select label id:"); input = Console.ReadLine(); int labelID = 0; if (!int.TryParse(input, out labelID)) { Console.WriteLine("wrong input"); return; } Label selectedLabel = (Label)labelID; HashSet <ulong> selectedCases = cases.Where(x => x.Labels.Contains(selectedLabel) && x.ID.HasValue).Select(x => x.ID.Value).ToHashSet(); if (selectedCases.Any()) { RunSelectedCases(ezbobProject, suit, milestone, selectedCases, selectedLabel, configs, configurationGroups); } else { Console.WriteLine("No cases match your filter"); return; } } }