From 278e3b07d2a43e6a33fbf9a74d2e3f84ca20ffe4 Mon Sep 17 00:00:00 2001 From: "serafim.urukov" Date: Tue, 27 Jul 2021 23:31:03 +0300 Subject: [PATCH] added some tests --- .gitignore | 5 +- SpreadsheetsService/models/assignment.py | 2 +- SpreadsheetsService/models/group.py | 16 ++--- SpreadsheetsService/models/student.py | 1 - SpreadsheetsService/tests/__init__.py | 0 SpreadsheetsService/tests/test_models.py | 79 ++++++++++++++++++++++++ 6 files changed, 91 insertions(+), 12 deletions(-) create mode 100644 SpreadsheetsService/tests/__init__.py create mode 100644 SpreadsheetsService/tests/test_models.py diff --git a/.gitignore b/.gitignore index 6f6af75..de27b66 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .vscode SpreadsheetsService/client_secret.json SpreadsheetsService/token.json -SpreadsheetsService/models/__pycache__/* -SpreadsheetsService/utils/__pycache__/* \ No newline at end of file +SpreadsheetsService/models/__pycache__ +SpreadsheetsService/utils/__pycache__ +SpreadsheetsService/tests/__pycache__ \ No newline at end of file diff --git a/SpreadsheetsService/models/assignment.py b/SpreadsheetsService/models/assignment.py index 9ecdf04..d24f096 100644 --- a/SpreadsheetsService/models/assignment.py +++ b/SpreadsheetsService/models/assignment.py @@ -1,7 +1,7 @@ class Assignment: """Задание.""" - def __init__(self, weight: float, values: tuple): + def __init__(self, weight: float, values): self.weight = weight self.values = values diff --git a/SpreadsheetsService/models/group.py b/SpreadsheetsService/models/group.py index 7f7c250..ef1be64 100644 --- a/SpreadsheetsService/models/group.py +++ b/SpreadsheetsService/models/group.py @@ -14,7 +14,7 @@ class Group: def __init__(self, group_id: int): self.group_id: int = group_id - self.students: Student = [] + self._students: Student = [] def __iter__(self): """Делегирует итератор на список студентов. @@ -24,18 +24,18 @@ class Group: for student in group ``` """ - return iter(self.students) + return iter(self._students) def add_student(self, student: Student): """Добавить студента в группу.""" - self.students.append(student) + self._students.append(student) def get_student_by_number(self, number: int) -> Student: """Возвращает студента по его номеру, если номера нет, то поднимает ошибку.""" f = lambda s: number == s.number try: - return next(filter(f, self.students)) + return next(filter(f, self._students)) except StopIteration: raise StudentNotFound("Не могу найти студента по номеру") @@ -50,15 +50,15 @@ class Group: """ f = lambda s: name.lower() in s.name.lower() - return list(filter(f, self.students)) + return list(filter(f, self._students)) def top(self, n: int = None) -> list: """Топ N студентов группы по среднему баллу. Возвращает весь список, если N не указано.""" - n = len(self.students) if n is None else n - return sorted(self.students, key=lambda student: student.grade)[:n] + n = len(self._students) if n is None else n + return sorted(self._students, key=lambda student: student.grade)[:n] def between(self, a: float, b: float) -> list: """Список студентов, у которых оценка между [a, b].""" f = lambda student: a < student.average < b - return list(filter(f, self.students)) + return list(filter(f, self._students)) diff --git a/SpreadsheetsService/models/student.py b/SpreadsheetsService/models/student.py index 9f81b6b..df2952d 100644 --- a/SpreadsheetsService/models/student.py +++ b/SpreadsheetsService/models/student.py @@ -10,7 +10,6 @@ class Student: self.tg_id = None self.assignments = [] - @property def add_assignment(self, assignment: Assignment): self.assignments.append(assignment) diff --git a/SpreadsheetsService/tests/__init__.py b/SpreadsheetsService/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SpreadsheetsService/tests/test_models.py b/SpreadsheetsService/tests/test_models.py new file mode 100644 index 0000000..11c30ed --- /dev/null +++ b/SpreadsheetsService/tests/test_models.py @@ -0,0 +1,79 @@ +import pytest +from models import * + + +ASSIGNMENTS = ((1, [1, 1, 1]), (10, [0.1, 0.8, 0.5]), (2, [1, 0, 1, 0])) +STUDENTS = ( + (1, "Бмэ Бобтубтйа"), + (2, "Боупопгб Нймбоб"), + (3, "Вспогбмэе Мёпойе"), + (4, "Дсйщйо Туёрбо"), + (5, "Еиёко Ейбоб"), + (6, "Еиявб Бооб"), + (7, "Ёмпглп Ебсэа"), + (8, "Лмёёг Ебойм"), + (9, "Лпсоёёг Лйсймм"), + (10, "Лпсойёолп Ойлйуб"), + (11, "Лпшлйо Йгбо"), + (12, "Лфсвбо Йгбо"), + (13, "Нбмэлпг Боесёк"), + (14, "Нботфспг Гмбейнйс"), + (15, "Нпйтёёг Лйсймм"), + (16, "Обибспг Уйнпхёк"), + (17, "Одфбезйп Одфёттпод Туйг Сб"), + (18, "Псёцпг Гмбейтмбг"), + (19, "Тёсёвсёоойлпгб Бобтубтйа"), + (20, "Тусфшйо Бобупмйк"), + (21, "Ублбмпгб Лбнйммб"), + (22, "Убсбтёгйш Пмэдб"), + (23, "Уплбсёг Тёсдёк"), + (24, "Успхйнпгб Бобтубтйа"), + (25, "Шфвбс Ебойм"), + (26, "Щбупг Нйцбйм"), +) + + +class TestStudent: + def test_init(self): + student = Student(1, "Фарид Михайлов") + assert student.name == "Фарид Михайлов" + assert student.number == 1 + + def test_student_assignments(self): + student = Student(1, "Фарид Михайлов") + + ass = [Assignment(weight, values) for weight, values in ASSIGNMENTS] + for a in ass: + student.add_assignment(a) + + assert student.score > 0 + + +class TestGroup: + @staticmethod + def init_group(): + group = Group(5374) + for el in STUDENTS: + student = Student(el[0], el[1]) + group.add_student(student) + return group + + def test_init(self): + group = self.init_group() + + for student in group: + assert type(student) is Student + + def test_search(self): + group = self.init_group() + + ebob = group.get_student_by_number(5) + assert ebob.name == "Еиёко Ейбоб" + + students = group.find_students("Йгбо") + assert len(students) == 2 + + def test_top(self): + group = self.init_group() + + group.top(5)