test_settings.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. from src.settings import settings
  2. from src.settings_manager import settings_manager
  3. import unittest, os, random
  4. def read_file(filename):
  5. with open(filename, 'r') as f:
  6. return f.read()
  7. class test_settings(unittest.TestCase):
  8. projdir = os.path.dirname(__file__) + "/.."
  9. #
  10. # Провеиить корректность заполнения поля first_name
  11. #
  12. def test_check_first_name(self):
  13. # Подготовка
  14. item = settings()
  15. # Действие
  16. item.first_name = "a "
  17. # Проверка
  18. assert item.first_name == "a"
  19. #
  20. # Проверить, что settings_manager инстанциируется только один раз
  21. #
  22. def test_check_settings_manager_singleton(self):
  23. # Подготовка
  24. man1 = settings_manager()
  25. man2 = settings_manager()
  26. # Действие
  27. # Проверка
  28. assert man1 is man2
  29. #
  30. # Проверить корректность загрузки настроек
  31. #
  32. def test_check_open_settings(self):
  33. # Подготовка
  34. man = settings_manager()
  35. # Действие
  36. result = man.open(f"{self.projdir}/cfg/settings.json")
  37. # Проверка
  38. assert result == True
  39. #
  40. # Проверить, что все поля настроек не пусты
  41. #
  42. def test_check_settings_fields_nonempty(self):
  43. # Подготовка
  44. man = settings_manager()
  45. settings = None
  46. # Действие
  47. man.open(f"{self.projdir}/cfg/settings.json")
  48. settings = man.settings
  49. dict = settings.__dict__
  50. # Проверка
  51. for key in dict.keys():
  52. assert len(str(dict[key])) != 0
  53. #
  54. # Проверить, что менеджер настроек может открыть файл
  55. # с любым названием и в любой папке
  56. #
  57. def test_settings_any_filename(self):
  58. # Подготовка
  59. if not os.path.exists(f"{self.projdir}/.test_data"):
  60. os.mkdir(f"{self.projdir}/.test_data")
  61. alp = "abcdefghijklmnopqrstuvwxyz"
  62. dirname = f"{self.projdir}/.test_data/"
  63. dirname += ''.join(random.choice(alp) for _ in range(6))
  64. filename = f"{dirname}/"
  65. filename += ''.join(random.choice(alp) for _ in range(6)) + ".json"
  66. os.mkdir(dirname)
  67. print(filename)
  68. f = open(filename, "w", encoding="UTF-8")
  69. f2 = open(f"{self.projdir}/cfg/settings.json", encoding="UTF-8")
  70. f.write(f2.read())
  71. f.close()
  72. f2.close()
  73. # Действие
  74. man = settings_manager()
  75. man.open(filename)
  76. # Проверка
  77. assert settings is not None
  78. # Очистка
  79. os.remove(filename)
  80. os.removedirs(dirname)