Пример #1
0
        public void SetTestStepLogStatus(Activity matchingActivity, ref QTestApiModel.TestStepLogResource testStepLog, List <QTestApiModel.StatusResource> statuses)
        {
            if (matchingActivity != null)
            {
                switch (matchingActivity.Status)
                {
                case Amdocs.Ginger.CoreNET.Execution.eRunStatus.Failed:
                    testStepLog.Status = statuses.Where(z => z.Name == "Failed").FirstOrDefault();
                    break;

                case Amdocs.Ginger.CoreNET.Execution.eRunStatus.NA:
                    testStepLog.Status = statuses.Where(z => z.Name == "Not Applicable").FirstOrDefault();
                    break;

                case Amdocs.Ginger.CoreNET.Execution.eRunStatus.Passed:
                    testStepLog.Status = statuses.Where(z => z.Name == "Passed").FirstOrDefault();
                    break;

                case Amdocs.Ginger.CoreNET.Execution.eRunStatus.Skipped:
                    testStepLog.Status = statuses.Where(z => z.Name == "Unexecuted").FirstOrDefault();
                    break;

                case Amdocs.Ginger.CoreNET.Execution.eRunStatus.Pending:
                    testStepLog.Status = statuses.Where(z => z.Name == "Deffered").FirstOrDefault();
                    break;

                default:
                    //Not used
                    break;
                }
            }
            else
            {
                testStepLog.Status = statuses.Where(z => z.Name == "Unexecuted").FirstOrDefault();
            }
        }
Пример #2
0
        public override bool ExportExecutionDetailsToALM(BusinessFlow bizFlow, ref string result, bool exectutedFromAutomateTab = false, PublishToALMConfig publishToALMConfig = null)
        {
            result = string.Empty;
            if (bizFlow.ExternalID == "0" || String.IsNullOrEmpty(bizFlow.ExternalID))
            {
                result = GingerDicser.GetTermResValue(eTermResKey.BusinessFlow) + ": " + bizFlow.Name + " is missing ExternalID, cannot locate QC TestSet without External ID";
                return(false);
            }

            try
            {
                //get the BF matching test set
                ConnectALMServer();
                testcaseApi = new QTestApi.TestcaseApi(connObj.Configuration);
                testrunApi  = new QTestApi.TestrunApi(connObj.Configuration);
                QTestApi.TestlogApi    testlogApi    = new QTestApi.TestlogApi(connObj.Configuration);
                QTestApi.AttachmentApi attachmentApi = new QTestApi.AttachmentApi(connObj.Configuration);

                QtestTestSuite testSuite = GetQtestTestSuite(bizFlow.ExternalID);
                if (testSuite != null)
                {
                    //get all BF Activities groups
                    ObservableList <ActivitiesGroup> activGroups = bizFlow.ActivitiesGroups;
                    if (activGroups.Count > 0)
                    {
                        foreach (ActivitiesGroup activGroup in activGroups)
                        {
                            if ((publishToALMConfig.FilterStatus == FilterByStatus.OnlyPassed && activGroup.RunStatus == eActivitiesGroupRunStatus.Passed) ||
                                (publishToALMConfig.FilterStatus == FilterByStatus.OnlyFailed && activGroup.RunStatus == eActivitiesGroupRunStatus.Failed) ||
                                publishToALMConfig.FilterStatus == FilterByStatus.All)
                            {
                                QtestTest tsTest = null;
                                //go by TC ID = TC Instance ID
                                tsTest = testSuite.Tests.Where(x => x.TestID == activGroup.ExternalID).FirstOrDefault();
                                if (tsTest != null)
                                {
                                    //get activities in group
                                    List <Activity> activities   = (bizFlow.Activities.Where(x => x.ActivitiesGroupID == activGroup.Name)).Select(a => a).ToList();
                                    string          TestCaseName = PathHelper.CleanInValidPathChars(tsTest.TestName);
                                    if ((publishToALMConfig.VariableForTCRunName == null) || (publishToALMConfig.VariableForTCRunName == string.Empty))
                                    {
                                        String timeStamp = DateTime.Now.ToString("dd-MMM-yyyy HH:mm:ss");
                                        publishToALMConfig.VariableForTCRunName = "GingerRun_" + timeStamp;
                                    }


                                    if (tsTest.Runs[0] != null)
                                    {
                                        List <QTestApiModel.StatusResource> statuses      = testrunApi.GetStatusValuable((long)Convert.ToInt32(ALMCore.DefaultAlmConfig.ALMProjectKey));
                                        List <QTestApiModel.StatusResource> stepsStatuses = new List <QTestApiModel.StatusResource>();
                                        QTestApiModel.StatusResource        testCaseStatus;

                                        QTestApiModel.TestRunWithCustomFieldResource testRun      = testrunApi.Get((long)Convert.ToInt32(ALMCore.DefaultAlmConfig.ALMProjectKey), (long)Convert.ToInt32(tsTest.Runs[0].RunID), "descendents");
                                        List <QTestApiModel.TestStepLogResource>     testStepLogs = new List <QTestApiModel.TestStepLogResource>();

                                        QTestApiModel.TestCaseWithCustomFieldResource testCase = testcaseApi.GetTestCase((long)Convert.ToInt32(ALMCore.DefaultAlmConfig.ALMProjectKey), testRun.TestCase.Id);
                                        int testStepsCount = 0;
                                        foreach (QTestApiModel.TestStepResource step in testCase.TestSteps)
                                        {
                                            if (step.CalledTestCaseId != null)
                                            {
                                                QTestApiModel.TestCaseWithCustomFieldResource calledTestCase = testcaseApi.GetTestCase((long)Convert.ToInt32(ALMCore.DefaultAlmConfig.ALMProjectKey), step.CalledTestCaseId);
                                                foreach (QTestApiModel.TestStepResource nestedStep in calledTestCase.TestSteps)
                                                {
                                                    Activity matchingActivity = activities.Where(x => x.ExternalID == nestedStep.Id.ToString()).FirstOrDefault();
                                                    if (matchingActivity != null)
                                                    {
                                                        QTestApiModel.TestStepLogResource testStepLog = new QTestApiModel.TestStepLogResource(null, nestedStep.Id);
                                                        testStepLog.CalledTestCaseId = step.CalledTestCaseId;
                                                        testStepLog.ParentTestStepId = step.Id;
                                                        testStepLog.ActualResult     = string.Empty;
                                                        SetTestStepLogStatus(matchingActivity, ref testStepLog, statuses);
                                                        stepsStatuses.Add(testStepLog.Status);
                                                        testStepLogs.Add(testStepLog);
                                                        testStepsCount++;
                                                    }
                                                }
                                            }
                                            else
                                            {
                                                Activity matchingActivity = activities.Where(x => x.ExternalID == step.Id.ToString()).FirstOrDefault();
                                                if (matchingActivity != null)
                                                {
                                                    QTestApiModel.TestStepLogResource testStepLog = new QTestApiModel.TestStepLogResource(null, step.Id);
                                                    testStepLog.ActualResult = string.Empty;
                                                    SetTestStepLogStatus(matchingActivity, ref testStepLog, statuses);
                                                    stepsStatuses.Add(testStepLog.Status);
                                                    testStepLogs.Add(testStepLog);
                                                    testStepsCount++;
                                                }
                                            }
                                        }

                                        //update the TC general status based on the activities status collection.
                                        if (stepsStatuses.Where(x => x.Name == "Failed").Count() > 0)
                                        {
                                            testCaseStatus = statuses.Where(z => z.Name == "Failed").FirstOrDefault();
                                        }
                                        else if (stepsStatuses.Where(x => x.Name == "No Run").Count() == testStepsCount || stepsStatuses.Where(x => x.Name == "Not Applicable").Count() == testStepsCount)
                                        {
                                            testCaseStatus = statuses.Where(z => z.Name == "Unexecuted").FirstOrDefault();
                                        }
                                        else if (stepsStatuses.Where(x => x.Name == "Passed").Count() == testStepsCount || (stepsStatuses.Where(x => x.Name == "Passed").Count() + stepsStatuses.Where(x => x.Name == "Unexecuted").Count()) == testStepsCount)
                                        {
                                            testCaseStatus = statuses.Where(z => z.Name == "Passed").FirstOrDefault();
                                        }
                                        else
                                        {
                                            testCaseStatus = statuses.Where(z => z.Name == "Unexecuted").FirstOrDefault();
                                        }

                                        QTestApiModel.ManualTestLogResource automationTestLog = new QTestApiModel.ManualTestLogResource(null, null, DateTime.Parse(bizFlow.StartTimeStamp.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:sszz:00")), DateTime.Parse(bizFlow.EndTimeStamp.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:sszz:00")),
                                                                                                                                        null, null, tsTest.TestName + " - execution", null, null,
                                                                                                                                        null, null, null, testCaseStatus, null, testStepLogs);

                                        QTestApiModel.TestLogResource testLog = testlogApi.SubmitTestLog((long)Convert.ToInt32(ALMCore.DefaultAlmConfig.ALMProjectKey), automationTestLog, (long)Convert.ToInt32(tsTest.Runs[0].RunID));

                                        // Attach ActivityGroup Report if needed
                                        if (publishToALMConfig.ToAttachActivitiesGroupReport)
                                        {
                                            if ((activGroup.TempReportFolder != null) && (activGroup.TempReportFolder != string.Empty) &&
                                                (System.IO.Directory.Exists(activGroup.TempReportFolder)))
                                            {
                                                //Creating the Zip file - start
                                                string targetZipPath = System.IO.Directory.GetParent(activGroup.TempReportFolder).ToString();
                                                string zipFileName   = targetZipPath + "\\" + TestCaseName + "_GingerHTMLReport.zip";

                                                if (!System.IO.File.Exists(zipFileName))
                                                {
                                                    ZipFile.CreateFromDirectory(activGroup.TempReportFolder, zipFileName);
                                                }
                                                else
                                                {
                                                    System.IO.File.Delete(zipFileName);
                                                    ZipFile.CreateFromDirectory(activGroup.TempReportFolder, zipFileName);
                                                }
                                                System.IO.Directory.Delete(activGroup.TempReportFolder, true);
                                                // to discuss an issue
                                                attachmentApi.Upload((long)Convert.ToInt32(ALMCore.DefaultAlmConfig.ALMProjectKey), "test-logs", testLog.Id, "GingerExecutionHTMLReport.zip", "application/x-zip-compressed", File.ReadAllBytes(zipFileName));
                                                System.IO.File.Delete(zipFileName);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    //No matching TC was found for the ActivitiesGroup in QC
                                    result = "Matching TC's were not found for all " + GingerDicser.GetTermResValue(eTermResKey.ActivitiesGroups) + " in qTest.";
                                }
                            }
                        }
                    }
                    else
                    {
                        //No matching Test Set was found for the BF in QC
                        result = "No matching Test Set was found in qTest.";
                    }
                }
                if (result == string.Empty)
                {
                    result = "Export performed successfully.";
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            catch (Exception ex)
            {
                result = "Unexpected error occurred- " + ex.Message;
                Reporter.ToLog(eLogLevel.ERROR, "Failed to export execution details to Qtest", ex);
                return(false);
            }
        }