Browse Source

80% pytest coverage and TDG header optional name

Akash Singh 3 years ago
parent
commit
899144cf17

+ 14 - 1
baangt/TestDataGenerator/TestDataGenerator.py

@@ -513,6 +513,19 @@ class TestDataGenerator:
 
         if type(data_looking_for) == str:
             data_looking_for = data_looking_for.split(",")
+        data_new_header = {}
+        data_looking_for_old = data_looking_for[:]
+        data_looking_for = []
+        for header in data_looking_for_old:
+            if ":" in header:
+                old_header = header.split(":")[0].strip()
+                new_header = header.split(":")[1].strip()
+            else:
+                old_header = header
+                new_header = header
+            data_new_header[old_header] = new_header
+            data_looking_for.append(header)
+
         key_name = repr(sheet_name) + repr(data_looking_for) + repr(data_to_match) + repr(filename)
         if key_name in self.done:
             logger.debug(f"Data Gathered from previously saved data.")
@@ -548,7 +561,7 @@ class TestDataGenerator:
                     "sheet_name": sheet_name, "file_name": filename
                 }
             else:
-                dt = {keys: data[keys] for keys in data_looking_for}
+                dt = {header: data[keys] for (keys, header) in zip(data_looking_for, data_looking_for_old)}
                 data_lis.append(dt)
                 self.usecount_dict[repr(dt)] = {
                     "use": used_limit, "limit": limit, "index": data["Index"],

+ 7 - 4
baangt/base/ExportResults/ExportResults.py

@@ -162,7 +162,7 @@ class ExportResults:
         we shall take it from GlobalSettings. If also not there, take the default Value GC.EXECUTIN_STAGE_TEST
         :return:
         """
-        value = None
+        value = {}
         for key, value in self.dataRecords.items():
             break
         if not value.get(GC.EXECUTION_STAGE):
@@ -595,7 +595,10 @@ class ExportResults:
     def update_result_in_testrun(self):
         # To update source testrun file
         logger.debug("TestResult updating")
-        testrun_column = self.dataRecords[0]["testcase_column"]
+        try:
+            testrun_column = self.dataRecords[0]["testcase_column"]
+        except:
+            return
         if testrun_column:  # if testrun_column is greater than 0 that means testresult header is present in source file
             logger.debug(f'Header for result update is {self.dataRecords[0]["testcase_column"]} in sheet ' \
                          f'{self.dataRecords[0]["testcase_sheet"]} of file {self.dataRecords[0]["testcase_file"]}')
@@ -762,8 +765,8 @@ class ExportNetWork:
                  testCasesEndDateTimes_2D: list, workbook: xlsxwriter.Workbook, sheet: xlsxwriter.worksheet):
 
         self.networkInfo = networkInfo
-        #self.testCasesEndDateTimes_1D = testCasesEndDateTimes_1D
-        #self.testCasesEndDateTimes_2D = testCasesEndDateTimes_2D
+        self.testCasesEndDateTimes_1D = testCasesEndDateTimes_1D
+        self.testCasesEndDateTimes_2D = testCasesEndDateTimes_2D
         self.workbook = workbook
         self.sheet = sheet
         header_style = self.get_header_style()

+ 2 - 2
examples/example_googleImages.json

@@ -9,7 +9,7 @@
          "Sheetname": "data",
          "ParallelRuns": 1,
          "FromLine": 0,
-         "ToLine": 999999,
+         "ToLine": 1,
          "TESTCASE": {
            "1": ["baangt.TestCase.TestCaseMaster.TestCaseMaster", {
              "TestCaseType": "Browser",
@@ -22,7 +22,7 @@
                    "1": {"Activity": "GOTOURL", "LocatorType": "", "Locator": "", "Value": "https://google.com", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""},
                    "2": {"Activity": "COMMENT", "LocatorType": "", "Locator": "Open Google.com and search for terms from the data tab", "Value": "", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""},
                    "3": {"Activity": "SETTEXT", "LocatorType": "xpath", "Locator": "//input[@role='combobox']", "Value": "$(searchterm)", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""},
-                   "4": {"Activity": "CLICK", "LocatorType": "xpath", "Locator": "(//input[contains(@type,'submit')])[3]", "Value": "", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""}
+                   "4": {"Activity": "CLICK", "LocatorType": "xpath", "Locator": "//input[contains(@type,'submit')]", "Value": "", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""}
                  }
                }
                ]

+ 0 - 71
examples/example_googleImages_new.json

@@ -1,71 +0,0 @@
-{
-  "GC.KWARGS_TESTRUNATTRIBUTES": {
-    "GC.EXPORT_FORMAT": {
-      "GC.EXP_XLSX": "True",
-      "GC.EXP_FIELDLIST": ["GC.TestCaseStatus", "GC.TIMING_DURATION", "GC.TIMELOG"]
-    },
-    "GC.STRUCTURE_TESTCASESEQUENCE": {
-      "1": [
-        "GC.CLASSES_TESTCASESEQUENCE",
-        {
-          "GC.DATABASE_FILENAME": "example_googleImages.xlsx",
-          "GC.DATABASE_SHEETNAME": "data",
-          "GC.EXECUTION_PARALLEL": 1,
-          "GC.STRUCTURE_TESTCASE": {
-            "1": [
-              "GC.CLASSES_TESTCASE",
-              {
-                "GC.KWARGS_BROWSER": "GC.BROWSER_FIREFOX",
-                "GC.BROWSER_ATTRIBUTES": "",
-                "GC.KWARGS_TESTCASETYPE": "GC.KWARGS_BROWSER"
-              },
-              {
-                "GC.STRUCTURE_TESTSTEP": {
-                  "1": [
-                    "TestStepMaster", {
-                      "TestStepExecutionParameters": {
-                        "1": {
-                          "Activity": "GOTOURL",
-                          "LocatorType": "",
-                          "Locator": "",
-                          "Value": "https://google.com",
-                          "Comparison": "",
-                          "Value2": "",
-                          "Timeout": "",
-                          "Optional": "",
-                          "Release": ""
-                        },
-                        "2": {
-                          "Activity": "COMMENT",
-                          "LocatorType": "",
-                          "Locator": "Open Google.com and search for terms from the data tab",
-                          "Value": "",
-                          "Comparison": "",
-                          "Value2": "",
-                          "Timeout": "",
-                          "Optional": "",
-                          "Release": ""
-                        },
-                        "3": {
-                          "Activity": "SETTEXT",
-                          "LocatorType": "xpath",
-                          "Locator": "//input[@role='combobox']",
-                          "Value": "$(searchterm)",
-                          "Comparison": "",
-                          "Value2": "",
-                          "Timeout": "",
-                          "Optional": "",
-                          "Release": ""
-                        },
-                        "4": {
-                          "Activity": "CLICK",
-                          "LocatorType": "xpath",
-                          "Locator": "(//input[contains(@type,'submit')])[3]",
-                          "Value": "",
-                          "Comparison": "",
-                          "Value2": "",
-                          "Timeout": "",
-                          "Optional": "",
-                          "Release": ""
-                        }
-                      }}]}}]}}]}}}

+ 37 - 0
tests/0TestInput/ServiceTestInput/example_googleImages.json

@@ -0,0 +1,37 @@
+{"TESTRUNEXECUTIONPARAMETERS":
+   {"ExportFormat":  {
+     "ExportFormat": "XLSX",
+     "Fieldlist": ["TestCaseStatus", "Duration", "timelog"]},
+     "TESTSEQUENCE": {
+       "1": ["baangt.TestCaseSequence.TestCaseSequenceMaster.TestCaseSequenceMaster", {
+         "SequenceClass": "baangt.TestCaseSequence.TestCaseSequenceMaster.TestCaseSequenceMaster",
+         "TestDataFileName": "example_googleImages.xlsx",
+         "Sheetname": "data",
+         "ParallelRuns": 1,
+         "FromLine": 0,
+         "ToLine": 1,
+         "TESTCASE": {
+           "1": ["baangt.TestCase.TestCaseMaster.TestCaseMaster", {
+             "TestCaseType": "Browser",
+             "Browser": "FF",
+             "BrowserAttributes": ""
+           },
+             {"TestStep": {
+               "1": [{"TestStepClass": "baangt.TestSteps.TestStepMaster"}, {
+                 "TestStepExecutionParameters": {
+                   "1": {"Activity": "GOTOURL", "LocatorType": "", "Locator": "", "Value": "https://google.com", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""},
+                   "2": {"Activity": "COMMENT", "LocatorType": "", "Locator": "Open Google.com and search for terms from the data tab", "Value": "", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""},
+                   "3": {"Activity": "SETTEXT", "LocatorType": "xpath", "Locator": "//input[@role='combobox']", "Value": "$(searchterm)", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""},
+                   "4": {"Activity": "CLICK", "LocatorType": "xpath", "Locator": "//input[contains(@type,'submit')]", "Value": "", "Comparison": "", "Value2": "", "Timeout": "", "Optional": "", "Release": ""}
+                 }
+               }
+               ]
+             }
+             }
+           ]
+         }
+       }
+       ]
+     }
+   }
+}

+ 22 - 0
tests/0TestInput/ServiceTestInput/globals.json

@@ -0,0 +1,22 @@
+{
+    "TC.Lines": "0-1",
+    "TC.dontCloseBrowser": "False",
+    "TC.slowExecution": "False",
+    "TC.NetworkInfo": "False",
+    "TX.DEBUG": "False",
+    "TC.Browser": "FF",
+    "TC.BrowserAttributes": "",
+    "TC.ParallelRuns": "1",
+    "TC.BrowserWindowSize": "1024x768",
+    "TC.LogLevel": "Debug",
+    "TC.Stage": "Test",
+    "SendMailTo": "",
+    "NotificationWithAttachment": "True",
+    "MsWebHook": "",
+    "SlackWebHook": "",
+    "TelegramBot": "",
+    "TelegramChannel": "",
+    "DeactivateStatistics": "False",
+    "Password": "Franzi1234",
+    "AR2BXLS": "CompleteBaangtWebdemo_ResultsCombined.xlsx,CombinedResults"
+}

+ 20 - 0
tests/test_ExportResults.py

@@ -0,0 +1,20 @@
+from baangt.base.ExportResults.ExportResults import ExportAdditionalDataIntoTab, ExportNetWork
+from unittest.mock import MagicMock
+import datetime
+import pytest
+
+
+def test_ExportAdditionalDataIntoTab():
+    ExportAdditionalDataIntoTab("temp", {1: {"header": "value"}}, MagicMock()).export()
+    assert 1 == 1
+
+
+@pytest.mark.parametrize("d1, d2", [
+    ([datetime.datetime.now() + datetime.timedelta(hours=1)], []),
+    ([], [[[0, datetime.datetime.now() + datetime.timedelta(hours=1)]]]),
+    ([], []),
+])
+def test_get_test_case_num(d1, d2):
+    en = ExportNetWork({}, d1, d2, MagicMock(), MagicMock())
+    en._get_test_case_num(str(datetime.datetime.now()), "chrome")
+    assert 1 == 1

+ 7 - 0
tests/test_ServiceTest.py

@@ -274,3 +274,10 @@ def test_NestedLoops_and_repeat():
     s = Session()
     data = s.query(TestrunLog).get(uuid.UUID(TestRunUUID).bytes)
     assert "textarea2" in json.loads(data.RLPJson)
+
+
+def test_JsonTestRun():
+    run_file = str(input_dir.joinpath("example_googleImages.json"))
+    execute(run_file, globals_file=Path(input_dir).joinpath("globals.json"))
+    new_file = folder_monitor.getNewFiles()
+    assert new_file

+ 32 - 2
tests/test_browserHandling.py

@@ -253,7 +253,7 @@ def test_waitForPageLoadAfterButtonClick(getdriver):
 @pytest.mark.parametrize("function", [("close"), ("closeall-0"), ("")])
 def test_handleWindow(function, getdriver):
     getdriver.browserData = MagicMock()
-    getdriver.browserData.driver.window_handles = ["test"]
+    getdriver.browserData.driver.window_handles = ["test", "test"]
     if function == "":
         with pytest.raises(baangtTestStepException):
             getdriver.handleWindow(function=function)
@@ -298,4 +298,34 @@ def test_waitForElementChangeAfterButtonClick(mock_utils, getdriver):
     getdriver.element = MagicMock()
     getdriver.element.id = "xxxx"
     id.id = "1234"
-    getdriver.waitForElementChangeAfterButtonClick(timeout=0.1)
+    getdriver.waitForElementChangeAfterButtonClick(timeout=0.1)
+    assert 1 == 1
+
+
+@pytest.mark.parametrize("css, xpath, id", [("x", None, None), (None, "x", None), (None, None, "x")])
+def test_findWaitNotVisible(css, xpath, id, getdriver):
+    getdriver.browserData = MagicMock()
+    getdriver.findWaitNotVisible(css, xpath, id, timeout=1)
+    assert 1 == 1
+
+
+def test_findByAndForceViaJS(getdriver):
+    getdriver.browserData = MagicMock()
+    getdriver.findByAndForceViaJS(xpath="Test")
+    assert 1 == 1
+
+
+def test_findByAndForceText(getdriver):
+    getdriver.findBy = MagicMock()
+    getdriver.findBy.return_value = False, True
+    getdriver.findByAndForceText()
+    assert 1 == 1
+
+
+def test_findByAndSetTextValidated(getdriver):
+    getdriver.findBy = MagicMock()
+    getdriver.findByAndForceText = MagicMock()
+    getdriver.findBy.return_value = MagicMock(), "def"
+    getdriver.findBy.return_value[0].text = "abc"
+    getdriver.findBy.return_value[0].get_property.return_value = "abc"
+    getdriver.findByAndSetTextValidated(value="123")