/
LKastornova
/
Python_lesson
Обзор
Документация
Войти
/
LKastornova
/
Python_lesson
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
test/test_models.py
96 строк
4 KB
@lvkastor
Initial commit: Finance Manager 2026 application
11 янв 2026, 19:15
11 янв 2026, 19:15
209a1c3
Код
Авторство
О чём код?
""" Модуль тестирования классов данных приложения. Содержит unit-тесты для проверки корректности работы классов: - FinancialOperation - финансовая операция - Category - категория расходов Использует стандартный модуль unittest для организации тестов. """ import unittest from datetime import datetime from models import FinancialOperation, Category # запуск из корневой папки import unittest import sys import os from datetime import datetime # Добавляем родительскую папку в путь поиска модулей sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) from models import FinancialOperation, Category class TestFinancialOperation(unittest.TestCase): """Тестовый класс для проверки класса FinancialOperation.""" def test_operation_creation(self): """Тестирует создание финансовой операции.""" test_date = datetime(2024, 1, 10, 12, 30, 45) op = FinancialOperation('income', 1000, 'работа', 'зарплата', test_date, 'Зарплата за месяц') self.assertEqual(op.operation_type, 'income') self.assertEqual(op.amount, 1000) self.assertEqual(op.category, 'работа') self.assertEqual(op.subcategory, 'зарплата') self.assertEqual(op.date, test_date) self.assertEqual(op.comment, 'Зарплата за месяц') def test_operation_without_date(self): """Тестирует создание операции без указания даты.""" op = FinancialOperation('expense', 500, 'еда') self.assertIsNotNone(op.date) self.assertIsInstance(op.date, datetime) def test_operation_with_date_only(self): """Тестирует создание операции с объектом date (не datetime).""" from datetime import date test_date = date(2024, 1, 10) op = FinancialOperation('income', 1000, 'работа', None, test_date) # Дата должна быть преобразована в datetime self.assertEqual(op.date.year, 2024) self.assertEqual(op.date.month, 1) self.assertEqual(op.date.day, 10) def test_operation_repr(self): """Тестирует строковое представление операции.""" op = FinancialOperation('expense', 250, 'транспорт', 'такси') repr_str = repr(op) self.assertIn('expense', repr_str) self.assertIn('250', repr_str) self.assertIn('транспорт', repr_str) class TestCategory(unittest.TestCase): """Тестовый класс для проверки класса Category.""" def test_category_creation(self): """Тестирует создание категории.""" category = Category('еда', ['продукты', 'кафе']) self.assertEqual(category.name, 'еда') self.assertEqual(category.subcategories, ['продукты', 'кафе']) def test_add_subcategory(self): """Тестирует добавление подкатегории.""" category = Category('транспорт') category.add_subcategory('такси') category.add_subcategory('метро') self.assertIn('такси', category.subcategories) self.assertIn('метро', category.subcategories) self.assertEqual(len(category.subcategories), 2) def test_category_repr(self): """Тестирует строковое представление категории.""" category = Category('развлечения', ['кино', 'театр']) repr_str = repr(category) self.assertIn('развлечения', repr_str) self.assertIn('кино', repr_str) self.assertIn('театр', repr_str) if __name__ == '__main__': unittest.main()