test_Utils.py 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. import os
  2. import pytest
  3. import logging
  4. from pathlib import Path
  5. from datetime import datetime
  6. from baangt.base.BrowserHandling.BrowserHandling import BrowserDriver
  7. from baangt.base.Utils import utils
  8. logger = logging.getLogger("pyC")
  9. def test_utils_instance():
  10. instance = utils()
  11. assert instance._utils__perf_trace == {}
  12. def test_datetime_return():
  13. datetime_now = datetime.now().strftime("%Y%m%d_%H%M%S")
  14. assert utils.datetime_return() == datetime_now
  15. def test_sanitizeFileName():
  16. file_name = "'test.py'"
  17. sanitize_file_name = "test.py"
  18. assert utils.sanitizeFileName(file_name) == sanitize_file_name
  19. def test_replaceFieldValueWithValueOfConstant_GC_GCG():
  20. assert utils.replaceFieldValueWithValueOfConstant(
  21. "GC.BROWSER_CHROME") == "CHROME"
  22. assert utils.replaceFieldValueWithValueOfConstant(
  23. "CGC.VERMITTLER") == "Vermittler"
  24. assert utils.replaceFieldValueWithValueOfConstant(
  25. "GC.NOT_EXISTENT") == "GC.NOT_EXISTENT"
  26. def test_replaceAllGlobalConstantsInDict_str():
  27. obj_constants = {
  28. "GC.BROWSER_CHROME": "GC.BROWSER_CHROME",
  29. "CGC.VERMITTLER": "Vermittler",
  30. "GC.NOT_EXISTENT": "GC.NOT_EXISTENT"
  31. }
  32. obj_result = utils.replaceAllGlobalConstantsInDict(obj_constants)
  33. assert obj_result["CHROME"] == "CHROME"
  34. assert obj_result["Vermittler"] == "Vermittler"
  35. assert obj_result["GC.NOT_EXISTENT"] == "GC.NOT_EXISTENT"
  36. def test_replaceAllGlobalConstantsInDict_dict():
  37. obj = {
  38. "constants": {
  39. "GC.BROWSER_CHROME": "GC.BROWSER_CHROME",
  40. "CGC.VERMITTLER": "Vermittler",
  41. "GC.NOT_EXISTENT": "GC.NOT_EXISTENT"
  42. }
  43. }
  44. obj_result = utils.replaceAllGlobalConstantsInDict(obj)
  45. assert obj_result["constants"]["CHROME"] == "CHROME"
  46. assert obj_result["constants"]["Vermittler"] == "Vermittler"
  47. assert obj_result["constants"]["GC.NOT_EXISTENT"] == "GC.NOT_EXISTENT"
  48. def test_replaceAllGlobalConstantsInDict_list():
  49. obj = {
  50. "constants": ["GC.BROWSER_CHROME", "CGC.VERMITTLER", "GC.NOT_EXISTENT"]
  51. }
  52. obj_result = utils.replaceAllGlobalConstantsInDict(obj)
  53. assert obj_result["constants"][0] == "CHROME"
  54. assert obj_result["constants"][1] == "Vermittler"
  55. assert obj_result["constants"][2] == "GC.NOT_EXISTENT"
  56. def test_replaceAllGlobalConstantsInDict_other():
  57. obj = {
  58. "total": 15.5,
  59. "age": 21
  60. }
  61. obj_result = utils.replaceAllGlobalConstantsInDict(obj)
  62. assert obj_result["total"] == 15.5
  63. assert obj_result["age"] == 21
  64. def test_replaceAllGlobalConstantsInDict_loopList_dict():
  65. obj = {
  66. "constants": [
  67. {"GC.BROWSER_CHROME": "GC.BROWSER_CHROME"},
  68. {"CGC.VERMITTLER": "Vermittler"},
  69. {"GC.NOT_EXISTENT": "GC.NOT_EXISTENT"}
  70. ]
  71. }
  72. result = utils.replaceAllGlobalConstantsInDict(obj)
  73. constants = result["constants"]
  74. assert constants[0]["CHROME"] == "CHROME"
  75. assert constants[1]["Vermittler"] == "Vermittler"
  76. assert constants[2]["GC.NOT_EXISTENT"] == "GC.NOT_EXISTENT"
  77. def test_replaceAllGlobalConstantsInDict_loopList_list():
  78. obj = {
  79. "constants": [
  80. ["GC.BROWSER_CHROME", "CGC.VERMITTLER", "GC.NOT_EXISTENT"]
  81. ]
  82. }
  83. result = utils.replaceAllGlobalConstantsInDict(obj)
  84. result_list = result["constants"][0]
  85. assert result_list[0] == "CHROME"
  86. assert result_list[1] == "Vermittler"
  87. assert result_list[2] == "GC.NOT_EXISTENT"
  88. def test_openJson():
  89. directory = Path(os.getcwd()).joinpath("tests").joinpath("jsons")
  90. json_globals = utils.openJson(Path(directory).joinpath('globals.json'))
  91. assert json_globals["TC.Lines"] == ""
  92. assert not json_globals["TC.dontCloseBrowser"]
  93. assert json_globals["TC.slowExecution"] == "True"
  94. assert not json_globals.get("TX.DEBUG")
  95. def test_setLogLevel():
  96. level = "Info"
  97. utils.setLogLevel(level)
  98. assert logger.isEnabledFor(20)
  99. def test_listToString_number_list():
  100. numbers = [1, 2, 3]
  101. assert utils.listToString(numbers) == '1, 2, 3'
  102. def test_listToString_string_list():
  103. letters = ['a', 'b', 'c']
  104. assert utils.listToString(letters) == 'a, b, c'
  105. def test_listToString_object_list():
  106. users = [{'name': 'Andrea', 'age': 18}, {'name': 'Jhon', 'age': 25}]
  107. assert utils.listToString(users) == "{'name': 'Andrea', 'age': 18}, {'name': 'Jhon', 'age': 25}"
  108. def test___listChildToString_number_list():
  109. numbers = [1, 2, 3]
  110. assert utils.listToString(numbers) == '1, 2, 3'
  111. def test___listChildToString_string_list():
  112. letters = ['a', 'b', 'c']
  113. assert utils.listToString(letters) == 'a, b, c'
  114. def test___listChildToString_object_list():
  115. users = [{'name': 'Andrea', 'age': 18}, {'name': 'Jhon', 'age': 25}]
  116. assert utils.listToString(users) == "{'name': 'Andrea', 'age': 18}, {'name': 'Jhon', 'age': 25}"
  117. def test___listChildToString_lists_list():
  118. lists = [[1, 2, 3], ['a', 'b', 'c']]
  119. assert utils.listToString(lists) == "1, 2, 3\na, b, c"
  120. def test_setLocatorFromLocatorType_xpath():
  121. locatorType = 'XPATH'
  122. locator = '/library/book/author'
  123. xpath, css, lid = utils.setLocatorFromLocatorType(locatorType, locator)
  124. assert xpath == locator
  125. assert not css
  126. assert not lid
  127. def test_setLocatorFromLocatorType_css():
  128. locatorType = 'CSS'
  129. locator = 'fa-trash'
  130. xpath, css, lid = utils.setLocatorFromLocatorType(locatorType, locator)
  131. assert not xpath
  132. assert css == locator
  133. assert not lid
  134. def test_setLocatorFromLocatorType_id():
  135. locatorType = 'ID'
  136. locator = 'library'
  137. xpath, css, lid = utils.setLocatorFromLocatorType(locatorType, locator)
  138. assert not xpath
  139. assert not css
  140. assert lid == locator
  141. def test_dynamicImportOfClasses_fullQualifiedImportName():
  142. fullQualifiedImportName = "baangt.base.BrowserHandling.BrowserHandling.BrowserDriver"
  143. assert utils.dynamicImportOfClasses(fullQualifiedImportName=fullQualifiedImportName) == BrowserDriver().__class__
  144. def test_dynamicImportOfClasses_className():
  145. className = "BrowserDriver"
  146. with pytest.raises(Exception):
  147. assert utils.dynamicImportOfClasses(className=className) == BrowserDriver().__class__
  148. def test_dynamicImportOfClasses_path_className():
  149. path = "baangt.base.BrowserHandling.BrowserHandling"
  150. className = "BrowserDriver"
  151. assert utils.dynamicImportOfClasses(modulePath=path, className=className) == BrowserDriver().__class__
  152. def test_dynamicImportOfClasses_path_className_not_found_class_in_module():
  153. path = "baangt.base.BrowserHandling.BrowserHandling"
  154. className = "BrowserDriverHookImpl"
  155. with pytest.raises(Exception):
  156. assert utils.dynamicImportOfClasses(modulePath=path, className=className) == BrowserDriver().__class__
  157. def test_findFileAndPathFromPath_directory():
  158. directory = "~/baangt/examples"
  159. fileNameAndPath = Path(directory).joinpath('global_not_exist.json')
  160. with pytest.raises(Exception):
  161. utils.findFileAndPathFromPath(fileNameAndPath, directory)
  162. def test_findFileAndPathFromPath_only_fileNamePath():
  163. fileNameAndPath = 'globals.json'
  164. with pytest.raises(Exception):
  165. utils.findFileAndPathFromPath(str(fileNameAndPath))
  166. def test_findFileAndPathFromPath_except_canot_find_file():
  167. directory = Path(os.getcwd()).parent.joinpath("examples")
  168. fileNameAndPath = Path(directory).joinpath('globals2.json')
  169. with pytest.raises(Exception):
  170. utils.findFileAndPathFromPath(str(fileNameAndPath))
  171. def test_findFileAndPathFromPath_exists_by_directory_and_only_fileName():
  172. directory = Path(os.getcwd()).joinpath("examples")
  173. fileNameAndPath = 'globals.json'
  174. result = utils.findFileAndPathFromPath(fileNameAndPath, str(directory))
  175. assert Path(result).exists()
  176. def test_anything2Boolean_raise():
  177. lResult = utils.anything2Boolean({})
  178. assert lResult == False
  179. def test_anything2Boolean_booleans():
  180. assert utils.anything2Boolean(True) is True
  181. assert utils.anything2Boolean(False) is False
  182. def test_anything2Boolean_numbers():
  183. assert utils.anything2Boolean(0) is False
  184. assert utils.anything2Boolean(1) is True
  185. assert utils.anything2Boolean(51) is True
  186. def test_anything2Boolean_strings():
  187. assert utils.anything2Boolean("true") is True
  188. assert utils.anything2Boolean("something else") is False