private void showTestLabTree() { TestSetTreeManager testSetTreeMgr = (TestSetTreeManager)conn.TestSetTreeManager; TestSetFolder rootTestSetFolder = (TestSetFolder)testSetTreeMgr.get_NodeByPath(txtQCFolderPath.Text); TreeNode rootThreadNode = new TreeNode(); rootThreadNode.Tag = "rootfolder"; rootThreadNode.Text = rootThreadNode.ToolTipText = rootTestSetFolder.Name; treeViewALM.Nodes.Add(rootThreadNode); progressBar1.Maximum = rootTestSetFolder.Count; progressBar1.PerformStep(); for (int i = 1; i <= rootTestSetFolder.Count; i++) { TreeNode parentThreadNode = new TreeNode(); SysTreeNode tNode = (SysTreeNode)rootTestSetFolder.get_Child(i); parentThreadNode.Name = parentThreadNode.Text = rootTestSetFolder.get_Child(i).Name; parentThreadNode.Tag = "testsetfolder"; rootThreadNode.Nodes.Add(parentThreadNode); AddChildNodes(tNode, parentThreadNode); AddTestSetToNodes(parentThreadNode, tNode); progressBar1.PerformStep(); } treeViewALM.ShowNodeToolTips = true; treeViewALM.TopNode.Expand(); }
private void treeViewALM_AfterSelect(object sender, TreeViewEventArgs e) { Cursor.Current = Cursors.WaitCursor; if (e.Node.Tag != null) { if (e.Node.Tag.ToString().ToLower() == "testset") { TestSetTreeManager testSetTreeMgr = (TestSetTreeManager)conn.TestSetTreeManager; var path = BuildPath(e.Node); TestSetFolder rootTestSetFolder = (TestSetFolder)testSetTreeMgr.get_NodeByPath(path); List testSetList = rootTestSetFolder.FindTestSets(e.Node.Text, false, string.Empty); IEnumerator enumerator = testSetList.GetEnumerator(); if (enumerator.MoveNext()) { TestSet testSet = (TestSet)enumerator.Current; TSTestFactory tsTestFactory = (TSTestFactory)testSet.TSTestFactory; ListClass testList = (ListClass)tsTestFactory.NewList(string.Empty); IEnumerator testListEnum = testList.GetEnumerator(); if (dtALMTestDetails == null) { dtALMTestDetails = BuildDataTable(); } else { dtALMTestDetails.Clear(); } List TSSetFields = tsTestFactory.Fields; while (testListEnum.MoveNext()) { DataRow drTestDetails = dtALMTestDetails.NewRow(); object item = testListEnum.Current; TSTest atest = (TSTest)testListEnum.Current; drTestDetails["TestName"] = atest.TestName; drTestDetails["Status"] = atest.Status; drTestDetails["FailureReason"] = atest["TC_USER_01"]; drTestDetails["JenkinsLog"] = atest["TC_USER_09"]; dtALMTestDetails.Rows.Add(drTestDetails); } } dgvALM.DataSource = dtALMTestDetails; } else { dtALMTestDetails.Clear(); dgvALM.DataSource = dtALMTestDetails; } } else { dtALMTestDetails.Clear(); dgvALM.DataSource = dtALMTestDetails; } Cursor.Current = Cursors.Default; }
private void UploadALM(string strSelectedScriptName, string strStatus, string strFailureReason, string strJenkinsLog) { string strSelectedTestSetName = treeViewALM.SelectedNode.Name; string strSelectedTestSetFullPath = BuildPath(treeViewALM.SelectedNode);; TestSetTreeManager testSetTreeMgr = (TestSetTreeManager)conn.TestSetTreeManager; TestSetFolder rootTestSetFolder = (TestSetFolder)testSetTreeMgr.get_NodeByPath(strSelectedTestSetFullPath); List testSetList = rootTestSetFolder.FindTestSets(strSelectedTestSetName, false, string.Empty); IEnumerator enumerator = testSetList.GetEnumerator();; if (enumerator.MoveNext()) { TestSet testSet = (TestSet)enumerator.Current; TSTestFactory tsTestFactory = (TSTestFactory)testSet.TSTestFactory; ListClass testList = (ListClass)tsTestFactory.NewList(string.Empty); IEnumerator testListEnum = testList.GetEnumerator(); while (testListEnum.MoveNext()) { object item = testListEnum.Current; TSTest atest = (TSTest)testListEnum.Current; if (atest.TestName.ToLower() == strSelectedScriptName.ToLower()) { atest.Status = strStatus; atest["TC_USER_01"] = strFailureReason; atest["TC_USER_09"] = strJenkinsLog; atest.Post(); } } } }
public TestSet GetTestSet(String path, String testSetName) { TestSetFactory testSetFactory = connection.TestSetFactory; TestSetTreeManager testSetTreeManager = connection.TestSetTreeManager; TestSetFolder testSetFolder = (TestSetFolder)testSetTreeManager.NodeByPath[path]; List testSetList = testSetFolder.FindTestSets(testSetName); TestSet testSet = testSetList[0]; return(testSet); }
public int Create( string DestinationPath, string TestSetName, string[] Additional = default(string[])) { int returnValue = 0; try { if (Connect(ServerUrl, Username, Password, Domain, Project)) { TestSetTreeManager tree = tdc.TestSetTreeManager; TestSetFolder folder; folder = tree.NodeByPath[DestinationPath]; TestSetFactory TSFact = folder.TestSetFactory; TestSet NewTestSet; NewTestSet = TSFact.AddItem(DBNull.Value); NewTestSet.Name = TestSetName; //Set additional field values if (Additional != default(string[])) { foreach (string fieldPair in Additional) { string[] tempFieldArray = fieldPair.Split(new[] { ";;" }, StringSplitOptions.None); NewTestSet[tempFieldArray[0]] = tempFieldArray[1]; } } NewTestSet.Post(); //Console.Out.WriteLine(NewTestSet.ID); returnValue = NewTestSet.ID; } } catch (COMException ce) { rr.AddErrorLine(HandleException(ce)); } finally { Disconnect(); } return(returnValue); }
/** * get a folder in QC * * @param string tsPath * @return TestSetFolder */ public TestSetFolder retrieveFolder(string tsPath) { TestSetFactory tsFactory = (TestSetFactory)tdConn.TestSetFactory; TestSetTreeManager tsTreeMgr = (TestSetTreeManager)tdConn.TestSetTreeManager; TestSetFolder tsFolder = null; try { tsFolder = (TestSetFolder)tsTreeMgr.get_NodeByPath(tsPath); } catch (Exception e) { log.Warn("couldn't get TestSetFolder with path " + tsPath); log.Warn(e.Message); } return(tsFolder); }
/// <summary> /// The FindListOfTestSetsByPath. /// </summary> /// <param name="testLabPath">The testLabPath<see cref="string"/>.</param> /// <returns>The <see cref="List{ALMTestSetInstance}"/>.</returns> private List <TestSetInstance> FindListOfTestSetsByPath(string testLabPath) { List <TestSetInstance> res = new List <TestSetInstance>(); // create a new list of ALMTestSetInstances TestSetTreeManager tree = this.connection.TestSetTreeManager as TestSetTreeManager; // gets tree set mananger form QC Connection try { TestSetFolder tsFolder = tree.NodeByPath[testLabPath] as TestSetFolder; // gets test set folder from the testLabPath List tsList = tsFolder.FindTestSets(string.Empty); // gets list of test sets in the folder foreach (TestSet test in tsList) { res.Add(new TestSetInstance(test, this.Username)); } } catch (Exception) { } return(res); // return list of ALMTestCaseInstance }
//get test lab explorer(tree view) public static List <string> GetTestLabExplorer(string PathNode) { TestSetTreeManager treeM = (TestSetTreeManager)mTDConn.TestSetTreeManager; TestSetFolder tsFolder = treeM.get_NodeByPath(PathNode); if (tsFolder == null && PathNode.ToUpper() == "ROOT") { tsFolder = treeM.Root; } List FoldersList = tsFolder.NewList(); List <string> testlabPathList = new List <string>(); foreach (TestSetFolder folder in FoldersList) { testlabPathList.Add(folder.Name); } return(testlabPathList); }
/// <summary> /// The GetAllTestSetByPath. /// </summary> /// <param name="path">The path<see cref="string"/>.</param> /// <returns>The <see cref="TestSetInstance"/>.</returns> public List <string> GetAllTestSetByPath(string path) { List <string> res = new List <string>(); TestSetTreeManager tree = this.connection.TestSetTreeManager as TestSetTreeManager; try { TestSetFolder tsFolder = tree.NodeByPath[path] as TestSetFolder; List tsList = tsFolder.FindTestSets(string.Empty); foreach (TestSet test in tsList) { res.Add($"{test.ID}"); } } catch (Exception) { } return(res); }
//Given the test target machine name for calling RunTestSets public bool RunTestSets(string testMachine, string configPath) { try { TestSetTreeManager TestSetTreeMana = tdConn.TestSetTreeManager as TestSetTreeManager; TestSetFolder TestSetFolderPath = TestSetTreeMana.get_NodeByPath("Root\\AUTORUN\\" + tsFolderName) as TestSetFolder; TestSetFactory TestSetFact = TestSetFolderPath.TestSetFactory as TestSetFactory; TDFilter TestSetFilter = TestSetFact.Filter as TDFilter; List TestSetList = TestSetFilter.NewList() as List; foreach (TestSet ts in TestSetList) { // need give the testmachine name and notice the whether use QTP, // These value from command input if (testMachine != null && testMachine != "") { AutoLog.Info("[bool RunTestSets]Begin to run test set: " + ts.Name); //Console.Out.WriteLine("==========[bool RunTestSets]Begin to run test set: " + ts.Name); RunCurrentSet(ts, testMachine, configFile.RunParameter.UsingQTP, configPath); AutoLog.Info("[bool RunTestSets]End to run test set: " + ts.Name); //Console.Out.WriteLine("==========[bool RunTestSets]End run test set: " + ts.Name); } else { RunCurrentSet(ts, configFile.RunParameter.TestMachine, configFile.RunParameter.UsingQTP, configPath); } } return(true); } catch (Exception e) { AutoLog.Info("AutoIntSys: Run test sets exception" + e.Message); //Console.Out.WriteLine("AutoIntSys: Run test sets exception" + e.Message); //Debug.Print("AutoIntSys:" + e); //Debug.Print("AutoIntSys:Run Test Sets Error!"); return(false); } }
//Add the special folder under the ROOT\AUTORUN //If the folder has already exist, then return the folder handle private TestSetFolder CreateTestSetFolder(string FolderName) { string rootPath = "Root\\AUTORUN\\"; try { TestSetTreeManager TestSetTreeMana = tdConn.TestSetTreeManager as TestSetTreeManager; TestSetFolder TestSetFolderPath = TestSetTreeMana.get_NodeByPath(rootPath) as TestSetFolder; //Add a new folder under the rootPath if (CheckFolderIsExist(TestSetFolderPath, FolderName)) { AutoLog.Info("AutoIntSys: Test folder has already in QC!"); //Debug.Print("AutoIntSys: Test folder has already in QC!"); SysTreeNode getTestSetFolder = TestSetFolderPath.FindChildNode(FolderName) as SysTreeNode; TestSetFolder TSExistFolder = TestSetTreeMana.get_NodeById(getTestSetFolder.NodeID) as TestSetFolder; createTFSucess = false; return(TSExistFolder); } SysTreeNode CurTestSetFolder = TestSetFolderPath.AddNode(FolderName) as SysTreeNode; CurTestSetFolder.Post(); //The new test set will be added under the newly test folder TestSetFolder TSFolder = TestSetTreeMana.get_NodeById(CurTestSetFolder.NodeID) as TestSetFolder; createTFSucess = true; return(TSFolder); } catch (Exception e) { AutoLog.Info("AutoIntSys: Exception with " + e.Message); AutoLog.Info("AutoIntSys: Create Test Sets Error!"); //Debug.Print("AutoIntSys:Create Test Sets Error!"); //Debug.Print("AutoIntSys:" + e.Message); return(null); } }
//get test set explorer(tree view) public static IEnumerable <Object> GetTestSetExplorer(string PathNode) { TestSetTreeManager treeM = (TestSetTreeManager)mTDConn.TestSetTreeManager; TestSetFolder tsFolder = treeM.get_NodeByPath(PathNode); if (tsFolder == null && PathNode.ToUpper() == "ROOT") { tsFolder = treeM.Root; } TestSetFactory TSetFact = mTDConn.TestSetFactory; TDFilter tsFilter = TSetFact.Filter; try { tsFilter["CY_FOLDER_ID"] = "" + tsFolder.NodeID + ""; } catch (Exception e) { tsFilter["CY_FOLDER_ID"] = "\"" + tsFolder.Path.ToString() + "\""; Reporter.ToLog(eLogLevel.ERROR, $"Method - {MethodBase.GetCurrentMethod().Name}, Error - {e.Message}", e); } List TestsetList = TSetFact.NewList(tsFilter.Text); List <ALMTestSetSummary> testlabPathList = new List <ALMTestSetSummary>(); foreach (TestSet testset in TestsetList) { ALMTestSetSummary QCTestSetTreeItem = new ALMTestSetSummary(); QCTestSetTreeItem.TestSetID = testset.ID; QCTestSetTreeItem.TestSetName = testset.Name; testlabPathList.Add(QCTestSetTreeItem); } return(testlabPathList); }
public static bool ExportBusinessFlowToQC(BusinessFlow businessFlow, TestSet mappedTestSet, string uploadPath, ObservableList <ExternalItemFieldBase> testSetFields, ref string result) { TestSet testSet; ObservableList <ActivitiesGroup> existingActivitiesGroups = new ObservableList <ActivitiesGroup>(); try { if (mappedTestSet == null) { //##create new Test Set in QC TestSetFactory TestSetF = (TestSetFactory)mTDConn.TestSetFactory; testSet = (TestSet)TestSetF.AddItem(System.DBNull.Value); //set the upload path TestSetTreeManager treeM = (TestSetTreeManager)mTDConn.TestSetTreeManager; ISysTreeNode testSetParentFolder = (ISysTreeNode)treeM.get_NodeByPath(uploadPath); testSet.TestSetFolder = testSetParentFolder.NodeID; } else { //##update existing test set //testSet = mappedTestSet; testSet = ImportFromQC.GetQCTestSet(mappedTestSet.ID.ToString()); TSTestFactory testsF = (TSTestFactory)testSet.TSTestFactory; List tsTestsList = testsF.NewList(""); foreach (TSTest tsTest in tsTestsList) { ActivitiesGroup ag = businessFlow.ActivitiesGroups.Where(x => (x.ExternalID == tsTest.TestId.ToString() && x.ExternalID2 == tsTest.ID.ToString())).FirstOrDefault(); if (ag == null) { testsF.RemoveItem(tsTest.ID); } else { existingActivitiesGroups.Add(ag); } } } //set item fields foreach (ExternalItemFieldBase field in testSetFields) { if (field.ToUpdate || field.Mandatory) { if (string.IsNullOrEmpty(field.SelectedValue) == false && field.SelectedValue != "NA") { testSet[field.ID] = field.SelectedValue; } else { try { testSet[field.ID] = "NA"; } catch { } } } } //post the test set testSet.Name = businessFlow.Name; try { testSet.Post(); } catch (Exception ex) { if (ex.Message.Contains("The Test Set already exists")) { result = "Cannot export " + GingerDicser.GetTermResValue(eTermResKey.BusinessFlow) + "- The Test Set already exists in the selected folder. "; Reporter.ToLog(eLogLevel.ERROR, result, ex); return(false); } //Searching for the testset in case it was created in ALM although getting exception TestSetFactory TSetFact = mTDConn.TestSetFactory; TDFilter tsFilter = TSetFact.Filter; TestSetTreeManager treeM = (TestSetTreeManager)mTDConn.TestSetTreeManager; ISysTreeNode testSetParentFolder = (ISysTreeNode)treeM.get_NodeByPath(uploadPath); try { tsFilter["CY_FOLDER_ID"] = "" + testSetParentFolder.NodeID + ""; } catch (Exception e) { tsFilter["CY_FOLDER_ID"] = "\"" + testSetParentFolder.Path.ToString() + "\""; Reporter.ToLog(eLogLevel.ERROR, $"Method - {MethodBase.GetCurrentMethod().Name}, Error - {e.Message}", e); } List TestsetList = TSetFact.NewList(tsFilter.Text); foreach (TestSet set in TestsetList) { if (set.Name == businessFlow.Name) { testSet = set; break; } } } businessFlow.ExternalID = testSet.ID.ToString(); //Add missing test cases TSTestFactory testCasesF = testSet.TSTestFactory; foreach (ActivitiesGroup ag in businessFlow.ActivitiesGroups) { if (existingActivitiesGroups.Contains(ag) == false && string.IsNullOrEmpty(ag.ExternalID) == false && ImportFromQC.GetQCTest(ag.ExternalID) != null) { TSTest tsTest = testCasesF.AddItem(ag.ExternalID); if (tsTest != null) { ag.ExternalID2 = tsTest.ID;//the test case instance ID in the test set- used for exporting the execution details } } else { foreach (ActivityIdentifiers actIdent in ag.ActivitiesIdentifiers) { ExportActivityAsTestStep(ImportFromQC.GetQCTest(ag.ExternalID), (Activity)actIdent.IdentifiedActivity); } } } return(true); } catch (Exception ex) { result = "Unexpected error occurred- " + ex.Message; Reporter.ToLog(eLogLevel.ERROR, "Failed to export the " + GingerDicser.GetTermResValue(eTermResKey.BusinessFlow) + " to QC/ALM", ex); return(false); } }
public void UploadResults(TB2.TestCase currentTestCase) { string testFolder = @"Root\WCS 7up Core - 5022\zz Automation\PracticeExecution\Temp_Prashant\QA72_7_31"; string testSetName = currentTestCase.Category; TestSetFactory tsFactory = (TestSetFactory)qcConnect.TestSetFactory; TestSetTreeManager tsTreeMgr = (TestSetTreeManager)qcConnect.TestSetTreeManager; TestSetFolder tsFolder = (TestSetFolder)tsTreeMgr.get_NodeByPath(testFolder); List tsList = tsFolder.FindTestSets(testSetName, false, null); TestSet testSet = tsList[1]; //foreach (TestSet testSet in tsList) //{ tsFolder = (TestSetFolder)testSet.TestSetFolder; TSTestFactory tsTestFactory = (TSTestFactory)testSet.TSTestFactory; List tsTestList = tsTestFactory.NewList(""); // And finally, update each test case status: foreach (TSTest tsTest in tsTestList) { //System.Console.Out.WriteLine("Test Case ID: " + tsTest.ID + ", Test Case Name: " + tsTest.Name + "\n"); if (currentTestCase.TestCaseName == tsTest.Name.Remove(0, 3)) { RunFactory runFactory = (RunFactory)tsTest.RunFactory; List allfields = runFactory.Fields; String browserValue = tsTest["TC_USER_TEMPLATE_10"]; // Console.WriteLine("Browser value : " + browserValue); Run lastRun = (Run)tsTest.LastRun; string runName = runFactory.UniqueRunName; RunFactory objRunFactory = tsTest.RunFactory; Run theRun = objRunFactory.AddItem(runName); theRun.Name = runName; //Get the count of test steps and compare it with the number of steps that were actually executed //and define the Execution status accordinagly theRun.CopyDesignSteps(); StepFactory Step = theRun.StepFactory; List stepList = (List)Step.NewList(""); if (currentTestCase.OverAllResult == OverAllResult.PASS) { theRun.Status = "Passed"; } else { theRun.Status = "Failed"; } theRun.Post(); //Delete current attachment from QC test set test case AttachmentFactory objAttachmentFactory = tsTest.Attachments; objSkipExec: var objCurrentAttachments = objAttachmentFactory.NewList(""); for (int objC = 1; objC <= objCurrentAttachments.Count; objC++) { try { objAttachmentFactory.RemoveItem(tsTest.Attachments.NewList("").Item(1).ID); } catch { } } if (objAttachmentFactory.NewList("").Count > 0) { goto objSkipExec; } IAttachment objAttachment = objAttachmentFactory.AddItem(DBNull.Value); objAttachment.FileName = currentTestCase.HTMLReportPath; objAttachment.Type = 1; objAttachment.Post(); string[] filePaths = System.IO.Directory.GetFiles(currentTestCase.ScreenShotPath); foreach (string file in filePaths) { objAttachment = objAttachmentFactory.AddItem(DBNull.Value); objAttachment.FileName = file; objAttachment.Type = 1; objAttachment.Post(); } break; // } } } }
private void Button_Click_1(object sender, RoutedEventArgs e) { try { TDConnection tdConn = new TDConnection(); tdConn.InitConnectionEx(qcUrl.Text); tdConn.ConnectProjectEx(qcDomain.Text, qcProject.Text, qcLogin.Text, qcPassword.Password); //MessageBox.Show((string)qcUrl.Text); //MessageBox.Show((string)qcDomain.Text); //MessageBox.Show((string)qcProject.Text); //MessageBox.Show((string)qcLogin.Text); //MessageBox.Show((string)qcPassword.Password); //MessageBox.Show((string)qcDomain.Text); //MessageBox.Show((string)testFolder.Text); //MessageBox.Show((string)testSet.Text); //RunFactory runFactory = (RunFactory)test.RunFactory;// //string testFolder = "^" + @"Root\MULTUM\Monthly Testing\SDK v4\"; //string testSet = "BNF SDKv4 Server and Update"; TestSetFactory tsFactory = (TestSetFactory)tdConn.TestSetFactory; TestSetTreeManager tsTreeMgr = (TestSetTreeManager)tdConn.TestSetTreeManager; TestSetFolder tsFolder = (TestSetFolder)tsTreeMgr.get_NodeByPath(testFolder.Text); TDAPIOLELib.List tsList = (TDAPIOLELib.List)tsFolder.FindTestSets((string)testSet.Text, false, null); //TDAPIOLELib.List tsTestList = tsFactory.NewList(""); //List tsList = tsFolder.FindTestSets(testSet, false, "status=No Run"); //Feature\Multum\Black Box\Monthly Testing\SDK v4 foreach (TestSet testset in tsList) { Console.WriteLine("Test Set Folder Path: {0}", testFolder); Console.WriteLine("Test Set: {0}", testset.Name); TestSetFolder tsfolder = (TestSetFolder)testset.TestSetFolder; //string testFolder = "^" + @"Root\MULTUM\Monthly Testing\SDK v4\"; TSTestFactory tsTestFactory = (TSTestFactory)testset.TSTestFactory; TDAPIOLELib.List tsTestList = tsTestFactory.NewList(""); //} foreach (TSTest tsTest in tsTestList)//no such interface supported { Console.WriteLine("Test Set: {0}", tsTest.Name); //Console.ReadLine(); string status = (string)tsTest.Status; Console.WriteLine("STATUS {0}", status); //Console.WriteLine("PARAMS {0}",tsTest.Params); Console.WriteLine("PARAMS {0}", tsTest.History); TDAPIOLELib.Run lastRun = (TDAPIOLELib.Run)tsTest.LastRun; // don't update test if it may have been modified by someone else if (lastRun == null) { RunFactory runFactory = (RunFactory)tsTest.RunFactory; TDAPIOLELib.List runs = runFactory.NewList(""); Console.WriteLine("test runs: {0}", runs.Count); String date = DateTime.Now.ToString("MM-dd_hh-mm-ss"); TDAPIOLELib.Run run = (TDAPIOLELib.Run)runFactory.AddItem("Run_" + date); //Run_5-23_14-49-52 var oRunInstance = (RunFactory)tsTest.RunFactory; //var oRun = (Run)oRunInstance.AddItem("Performance Test"); //run.Status = "Passed"; //run.Post(); //run.Refresh(); var oTest = (Test)tsTest.Test; var tsDesignStepList = oTest.DesignStepFactory.NewList(""); var oStepFactory = (StepFactory)run.StepFactory; foreach (DesignStep oDesignStep in tsDesignStepList) { var oStep = (Step)oStepFactory.AddItem(oDesignStep.StepName); //oStep.Status = "Passed"; //oStep.Post(); } } } } tdConn.DisconnectProject(); tdConn.Disconnect(); } catch (Exception ex) { MessageBox.Show(ex.Message); MessageBox.Show(ex.StackTrace); } }
public int Copy( string DestinationPath, string TestSetName, int TemplateTestSetId) { int returnValue = 0; try { if (!Connect(ServerUrl, Username, Password, Domain, Project)) { Disconnect(); return(0); } if (!CanPerformAction("ac_copy_cycle")) { rr.AddErrorLine("Error: user has no permission to copy a test set"); Disconnect(); return(0); } ISupportCopyPaste4 iscp; string clipboard; TestSetFactory testSetFact; TestSetTreeManager treeMan = tdc.TestSetTreeManager; TestSetFolder folder = null; folder = treeMan.NodeByPath[DestinationPath]; testSetFact = tdc.TestSetFactory; iscp = (ISupportCopyPaste4)testSetFact; clipboard = iscp.CopyToClipBoard(TemplateTestSetId.ToString(), 0, ""); try { iscp.PasteFromClipBoard(clipboard, folder.NodeID.ToString(), 0, 1); } catch (COMException ce) { rr.AddErrorLine(HandleException(ce)); //An exception happens when the name is already taken. The TS will copy successfully. } TDFilter filter; TestSetFactory tsFact = folder.TestSetFactory; filter = tsFact.Filter; string tsName = tsFact[TemplateTestSetId].Name; tsName = tsName.Trim(' '); string filterString = "\"" + "*" + tsName + "*" + "\""; filter["CY_CYCLE"] = filterString; filter.OrderDirection["CY_CYCLE_ID"] = (short)TDAPI_FILTERORDER.TDOLE_DESCENDING; List testSetList = filter.NewList(); //Because of an ALM API bug, the OrderDirection doesn't always work, so we have to iterate manually to find the newly created TS int newestId = 0; TestSet newCopy; foreach (TestSet newTestSet in testSetList) { if (newTestSet.ID > newestId) { newestId = newTestSet.ID; } } newCopy = tsFact[newestId]; newCopy.Name = TestSetName; try { newCopy.Post(); } catch (COMException ce) { rr.AddErrorLine(HandleException(ce)); } returnValue = newCopy.ID; //Console.Out.WriteLine(returnValue); } catch (COMException ce) { rr.AddErrorLine(HandleException(ce)); } finally { Disconnect(); } return(returnValue); }
public void UploadResults(TestCase currentTestCase) { string testFolder = Convert.ToString(ExecutionSession.dictCommonData["QCFolder"]); string testSetName = currentTestCase.Category; TestSetFactory tsFactory = (TestSetFactory)qcConnect.TestSetFactory; TestSetTreeManager tsTreeMgr = (TestSetTreeManager)qcConnect.TestSetTreeManager; TestSetFolder tsFolder = (TestSetFolder)tsTreeMgr.get_NodeByPath(testFolder); List tsList = tsFolder.FindTestSets(testSetName, false, null); TestSet testSet = tsList[1]; tsFolder = (TestSetFolder)testSet.TestSetFolder; TSTestFactory tsTestFactory = (TSTestFactory)testSet.TSTestFactory; List tsTestList = tsTestFactory.NewList(""); // And finally, update each test case status: foreach (TSTest tsTest in tsTestList) { if (currentTestCase.TestCaseName == tsTest.Name.Remove(0, 3)) { RunFactory runFactory = (RunFactory)tsTest.RunFactory; List allfields = runFactory.Fields; String browserValue = tsTest["TC_USER_TEMPLATE_10"]; Run lastRun = (Run)tsTest.LastRun; string runName = runFactory.UniqueRunName; RunFactory objRunFactory = tsTest.RunFactory; Run theRun = objRunFactory.AddItem(runName); theRun.Name = runName; theRun.CopyDesignSteps(); StepFactory Step = theRun.StepFactory; List stepList = (List)Step.NewList(""); if (currentTestCase.OverAllResult == OverAllResult.PASS) { theRun.Status = "Passed"; } else { theRun.Status = "Failed"; } theRun.Post(); //Delete current attachment from QC test set test case AttachmentFactory objAttachmentFactory = tsTest.Attachments; var objCurrentAttachments = objAttachmentFactory.NewList(""); for (int objC = 1; objC <= objCurrentAttachments.Count; objC++) { try { objAttachmentFactory.RemoveItem(tsTest.Attachments.NewList("").Item(1).ID); } catch { } } IAttachment objAttachment = objAttachmentFactory.AddItem(DBNull.Value); objAttachment.FileName = currentTestCase.QCHTMLReportPath; objAttachment.Type = 1; objAttachment.Post(); string[] filePaths = System.IO.Directory.GetFiles(currentTestCase.QCScreenShotPath); foreach (string file in filePaths) { objAttachment = objAttachmentFactory.AddItem(DBNull.Value); objAttachment.FileName = file; objAttachment.Type = 1; objAttachment.Post(); } break; } } }