mirror of
https://github.com/Faridik/Carolyn.git
synced 2026-07-08 05:11:52 +00:00
added some tests
This commit is contained in:
parent
109508992e
commit
278e3b07d2
5
.gitignore
vendored
5
.gitignore
vendored
@ -1,5 +1,6 @@
|
||||
.vscode
|
||||
SpreadsheetsService/client_secret.json
|
||||
SpreadsheetsService/token.json
|
||||
SpreadsheetsService/models/__pycache__/*
|
||||
SpreadsheetsService/utils/__pycache__/*
|
||||
SpreadsheetsService/models/__pycache__
|
||||
SpreadsheetsService/utils/__pycache__
|
||||
SpreadsheetsService/tests/__pycache__
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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))
|
||||
|
||||
@ -10,7 +10,6 @@ class Student:
|
||||
self.tg_id = None
|
||||
self.assignments = []
|
||||
|
||||
@property
|
||||
def add_assignment(self, assignment: Assignment):
|
||||
self.assignments.append(assignment)
|
||||
|
||||
|
||||
0
SpreadsheetsService/tests/__init__.py
Normal file
0
SpreadsheetsService/tests/__init__.py
Normal file
79
SpreadsheetsService/tests/test_models.py
Normal file
79
SpreadsheetsService/tests/test_models.py
Normal file
@ -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)
|
||||
Loading…
x
Reference in New Issue
Block a user