Browse Source

globals.json to overwrite/define settings

bernhardbuhl 4 years ago
parent
commit
5b0c63e28c

+ 12 - 5
baangt.py

@@ -28,6 +28,7 @@ def print_args():
     print("""
 Call: python baangt.py --parameters 
        --run=<Existing, predefined Name of a TestRun (XLSX or .JSON-File incl. Path)>
+       --globals=<path to JSON-File containing global Settings. If omitted, will look for globals.json in the current directory>
 
  Suggested for standard use:
    python baangt.py --run="Franzi4711.xlsx": Will run a Testrun Franzi4711.xlsx
@@ -35,11 +36,16 @@ Call: python baangt.py --parameters
    """)
 
 def callTestrun():
-    if ".XLSX" in testRunFile.upper():
-        CustTestRun(testRunName=utils.sanitizeFileName(testRunFile))
-    if ".JSON" in testRunFile.upper():
-        CustTestRun(testRunName=utils.sanitizeFileName(testRunFile))
-        pass
+    if ".XLSX" in testRunFile.upper() or ".JSON" in testRunFile.upper():
+        CustTestRun(testRunName=utils.sanitizeFileName(testRunFile), globalSettingsFileNameAndPath = globalSettingsFileName)
+    else:
+        sys.exit(f"Unknown Filetype - should be XLSX or JSON: {testRunFile}")
+
+def getGlobalSettings():
+    lGlobals = args_read("globals")
+    if not lGlobals:
+        lGlobals = "globals.json"
+    return lGlobals
 
 
 print_args()
@@ -50,6 +56,7 @@ if testRunFile:
 else:
     sys.exit("Called without Testrun definition - exiting")
 
+globalSettingsFileName = getGlobalSettings()
 callTestrun()
 
 

+ 1 - 1
baangt/TestCaseSequence/TestCaseSequenceMaster.py

@@ -119,7 +119,7 @@ class TestCaseSequenceMaster:
 
     def __getDatabase(self):
         if not self.testdataDataBase:
-            self.testdataDataBase = HandleDatabase()
+            self.testdataDataBase = HandleDatabase(globalSettings=self.testRunInstance.globalSettings)
             self.testdataDataBase.read_excel(fileName=self.testSequenceData[GC.DATABASE_FILENAME],
                                              sheetName=self.testSequenceData[GC.DATABASE_SHEETNAME])
         return self.testdataDataBase

+ 10 - 5
baangt/base/HandleDatabase.py

@@ -6,14 +6,15 @@ import baangt.base.GlobalConstants as GC
 
 logger = logging.getLogger("pyC")
 
+
 class HandleDatabase:
-    def __init__(self):
+    def __init__(self, globalSettings=None):
         self.lineNumber = 3
         self.globals = {
-            'base_url':'portal-fqa',
-            'user': '502266',
-            'password': 'R(r6ayhr7EP3',
-            'file_praemienauskunft': '/Users/bernhardbuhl/git/KatalonVIG/0testdateninput/Test_unterschrift_Beratungsprotokoll.pdf',
+            # 'base_url':'portal-fqa',
+            # 'user': '502266',
+            # 'password': 'R(r6ayhr7EP3',
+            # 'file_praemienauskunft': '/Users/bernhardbuhl/git/KatalonVIG/0testdateninput/Test_unterschrift_Beratungsprotokoll.pdf',
             CGC.CUST_TOASTS: "",
             CGC.CUST_TOASTS_ERROR: "",
             CGC.VIGOGFNUMMER: "",
@@ -22,6 +23,10 @@ class HandleDatabase:
             CGC.POLNRHOST: "",
             GC.TESTCASESTATUS: ""
         }
+        # FIXME: This is still not clean. GlobalSettings shouldn't be predefined in standard-Class
+        if globalSettings:
+            for setting, value in globalSettings.items():
+                self.globals[setting] = value
         self.df_json = None
 
     def read_excel(self, fileName, sheetName):

+ 11 - 8
baangt/base/TestRun.py

@@ -14,13 +14,14 @@ logger = logging.getLogger("pyC")
 
 
 class TestRun:
-    def __init__(self, testRunName):
-        # self.testRunAttributes = {}
+    def __init__(self, testRunName, globalSettingsFileNameAndPath=None):
         self.browser = {}
         self.apiInstance = None
         self.testType = None
         self.kwargs = {}
         self.dataRecords = {}
+        self.globalSettingsFileNameAndPath = globalSettingsFileNameAndPath
+        self.globalSettings = None
 
         self.testRunName, self.testRunFileName = TestRun._sanitizeTestRunNameAndFileName(testRunName)
         self.timing = Timing()
@@ -102,19 +103,21 @@ class TestRun:
         self.kwargs = kwargs
 
     def _initTestRun(self):
+        self.loadJSONGlobals()
         pass
 
+    def loadJSONGlobals(self):
+        if self.globalSettingsFileNameAndPath:
+            self.globalSettings = utils.openJson(self.globalSettingsFileNameAndPath)
+
     def _loadJSONTestRunDefinitions(self):
         if not self.testRunFileName:
             return
 
         if ".JSON" in self.testRunFileName.upper():
-            logger.info(f"Reading Definition from {self.testRunFileName}")
-            with open(self.testRunFileName) as json_file:
-                data = json.load(json_file)
-                data = utils.replaceAllGlobalConstantsInDict(data)
-                self.testRunUtils.setCompleteTestRunAttributes(testRunName=self.testRunName,
-                                                               testRunAttributes=data)
+            data = utils.replaceAllGlobalConstantsInDict(utils.openJson(self.testRunFileName))
+            self.testRunUtils.setCompleteTestRunAttributes(testRunName=self.testRunName,
+                                                           testRunAttributes=data)
 
     def _loadExcelTestRunDefinitions(self):
         if not self.testRunFileName:

+ 12 - 0
baangt/base/utils.py

@@ -1,6 +1,10 @@
 from datetime import datetime
 import baangt.base.GlobalConstants as GC
 import ntpath
+import logging
+import json
+
+logger = logging.getLogger("pyC")
 
 class utils:
     def __init__(self):
@@ -62,3 +66,11 @@ class utils:
                 item = utils._loopList(item)
             listOut.append(item)
         return listOut
+
+    @staticmethod
+    def openJson(fileNameAndPath):
+        logger.info(f"Reading Definition from {fileNameAndPath}")
+        data = None
+        with open(fileNameAndPath) as json_file:
+            data = json.load(json_file)
+        return data

+ 6 - 0
globals.json

@@ -0,0 +1,6 @@
+{
+  "base_url": "portal-fqa",
+  "user": "502266",
+  "password": "R(r6ayhr7EP3",
+  "file_praemienauskunft": "/Users/bernhardbuhl/git/KatalonVIG/0testdateninput/Test_unterschrift_Beratungsprotokoll.pdf"
+}