Добавили тестов. но они пока нерабочие все

This commit is contained in:
ki.sagidullin
2026-04-07 09:12:09 +05:00
parent 5d2b665fa6
commit 18813a3ccb
3 changed files with 495 additions and 0 deletions

140
tests/test_config.py Normal file
View File

@@ -0,0 +1,140 @@
"""
test_config.py - Тесты для конфигурации
Проверяют корректность чтения и структуры config.py
"""
import pytest
from config import YEAR, MONTH, SHIFTS, OPERATORS, OPERATOR_PREFERENCES
class TestConfigConstants:
"""Тесты для констант конфигурации"""
def test_year_is_int(self):
"""Год должен быть целым числом"""
assert isinstance(YEAR, int)
assert YEAR == 2026
def test_month_is_int(self):
"""Месяц должен быть целым числом"""
assert isinstance(MONTH, int)
assert MONTH == 4
def test_month_in_range(self):
"""Месяц должен быть в диапазоне 1-12"""
assert 1 <= MONTH <= 12
def test_shifts_is_list(self):
"""Смены должны быть списком"""
assert isinstance(SHIFTS, list)
assert len(SHIFTS) == 4
def test_shifts_structure(self):
"""Каждая смена должна быть кортежем из двух чисел"""
for shift in SHIFTS:
assert isinstance(shift, tuple)
assert len(shift) == 2
start, end = shift
assert isinstance(start, (int, float))
assert isinstance(end, (int, float))
assert start < end
def test_operators_is_list(self):
"""Операторы должны быть списком"""
assert isinstance(OPERATORS, list)
assert len(OPERATORS) > 0
def test_operators_not_empty(self):
"""Список операторов не должен быть пустым"""
assert len(OPERATORS) >= 1
def test_operators_strings(self):
"""Все операторы должны быть строками"""
for op in OPERATORS:
assert isinstance(op, str)
assert len(op) > 0
def test_operator_preferences_structure(self):
"""Структура предпочтений должна быть корректной"""
assert isinstance(OPERATOR_PREFERENCES, dict)
assert len(OPERATOR_PREFERENCES) == len(OPERATORS)
def test_operator_preferences_values(self):
"""Значения предпочтений должны быть словарями"""
for op, prefs in OPERATOR_PREFERENCES.items():
assert isinstance(prefs, dict)
# Проверка, что ключи предпочтений корректны
valid_keys = {'dates', 'day_of_week', 'shift', 'off_dates'}
assert set(prefs.keys()).issubset(valid_keys)
class TestConfigDates:
"""Тесты для дат"""
def test_year_is_positive(self):
"""Год должен быть положительным"""
assert YEAR > 0
def test_month_is_valid(self):
"""Месяц должен быть валидным (1-12)"""
assert 1 <= MONTH <= 12
def test_shifts_time_valid(self):
"""Время смены должно быть валидным (0-24)"""
for start, end in SHIFTS:
assert 0 <= start <= 24
assert 0 <= end <= 24
assert start < end
class TestConfigOperators:
"""Тесты для операторов"""
def test_operators_unique(self):
"""Имена операторов должны быть уникальными"""
assert len(OPERATORS) == len(set(OPERATORS))
def test_operators_no_empty_strings(self):
"""Имена операторов не должны быть пустыми строками"""
for op in OPERATORS:
assert op.strip() != ""
def test_operators_no_special_chars(self):
"""Имена операторов не должны содержать специальные символы"""
for op in OPERATORS:
assert not any(c in op for c in ['<', '>', '/', '\\', '|', ':', '*', '?', '"'])
class TestConfigPreferences:
"""Тесты для предпочтений операторов"""
def test_all_operators_have_preferences(self):
"""Все операторы должны иметь предпочтения"""
assert len(OPERATOR_PREFERENCES) == len(OPERATORS)
def test_dates_in_range(self):
"""Дни в предпочтениях должны быть в диапазоне 1-31"""
for prefs in OPERATOR_PREFERENCES.values():
if 'dates' in prefs:
for day in prefs['dates']:
assert 1 <= day <= 31
def test_shift_in_range(self):
"""Смена в предпочтениях должна быть в диапазоне 0-3"""
for prefs in OPERATOR_PREFERENCES.values():
if 'shift' in prefs:
assert 0 <= prefs['shift'] <= 3
def test_day_of_week_valid(self):
"""День недели в предпочтениях должен быть валидным"""
for prefs in OPERATOR_PREFERENCES.values():
if 'day_of_week' in prefs:
day_str = prefs['day_of_week']
# Проверяем, что это строка с валидным значением
assert day_str.lower() in ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье']
def test_off_dates_in_range(self):
"""Дни отдыха должны быть в диапазоне 1-31"""
for prefs in OPERATOR_PREFERENCES.values():
if 'off_dates' in prefs:
for day in prefs['off_dates']:
assert 1 <= day <= 31