-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtests.py
More file actions
141 lines (93 loc) · 5.61 KB
/
tests.py
File metadata and controls
141 lines (93 loc) · 5.61 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
from main import BooksCollector
# класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector
# обязательно указывать префикс Test
class TestBooksCollector:
# пример теста:
# обязательно указывать префикс test_
# дальше идет название метода, который тестируем add_new_book_
# затем, что тестируем add_two_books - добавление двух книг
def test_add_new_book_add_two_books(self):
# создаем экземпляр (объект) класса BooksCollector
collector = BooksCollector()
# добавляем две книги
collector.add_new_book('Гордость и предубеждение и зомби')
collector.add_new_book('Что делать, если ваш кот хочет вас убить')
# проверяем, что добавилось именно две
# словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2
assert len(collector.get_books_genre()) == 2
# напиши свои тесты ниже
# чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector()
# Книга не добавляется если длина больше 40 символов
def test_add_new_book_name_too_long(self):
collector = BooksCollector()
long_name = 'А' * 41
collector.add_new_book(long_name)
assert long_name not in collector.get_books_genre()
# Повторное добавление книги невозможно
def test_add_new_book_duplicate(self):
collector = BooksCollector()
collector.add_new_book('Дюна')
collector.add_new_book('Дюна')
assert len(collector.get_books_genre()) == 1
# Установка жанра книге
def test_set_book_genre_success(self):
collector = BooksCollector()
collector.add_new_book('Шерлок Холмс')
collector.set_book_genre('Шерлок Холмс', 'Детективы')
assert collector.get_book_genre('Шерлок Холмс') == 'Детективы'
# Нельзя установить жанр, которого нет в списке
def test_set_book_genre_invalid_genre(self):
collector = BooksCollector()
collector.add_new_book('Книга')
collector.set_book_genre('Книга', 'Роман')
assert collector.get_book_genre('Книга') == ''
# Получение книг с конкретным жанром
def test_get_books_with_specific_genre(self):
collector = BooksCollector()
collector.add_new_book('Оно')
collector.set_book_genre('Оно', 'Ужасы')
collector.add_new_book('Матрица')
collector.set_book_genre('Матрица', 'Фантастика')
result = collector.get_books_with_specific_genre('Ужасы')
assert result == ['Оно']
# Книги с возрастным рейтингом отсутствуют в списке для детей
def test_get_books_for_children(self):
collector = BooksCollector()
collector.add_new_book('Оно')
collector.set_book_genre('Оно', 'Ужасы')
collector.add_new_book('Чебурашка')
collector.set_book_genre('Чебурашка', 'Мультфильмы')
result = collector.get_books_for_children()
assert 'Чебурашка' in result
assert 'Оно' not in result
# Добавление книги в избранное
def test_add_book_in_favorites(self):
collector = BooksCollector()
collector.add_new_book('Дюна')
collector.add_book_in_favorites('Дюна')
assert 'Дюна' in collector.get_list_of_favorites_books()
# Защита от повторного добавления в избранное
def test_add_book_in_favorites_no_duplicates(self):
collector = BooksCollector()
collector.add_new_book('1984')
collector.add_book_in_favorites('1984')
collector.add_book_in_favorites('1984')
assert len(collector.get_list_of_favorites_books()) == 1
# Удаление книги из избранного
def test_delete_book_from_favorites(self):
collector = BooksCollector()
collector.add_new_book('Мастер и Маргарита')
collector.add_book_in_favorites('Мастер и Маргарита')
collector.delete_book_from_favorites('Мастер и Маргарита')
assert 'Мастер и Маргарита' not in collector.get_list_of_favorites_books()
# Позитивный тест на граничное значение длины имени
def test_add_new_book_name_length_40(self):
collector = BooksCollector()
valid_name = 'А' * 40
collector.add_new_book(valid_name)
assert valid_name in collector.get_books_genre()
# Нельзя добавить в избранное книгу, которой нет в коллекции
def test_add_book_in_favorites_book_not_in_collection(self):
collector = BooksCollector()
collector.add_book_in_favorites('Несуществующая книга')
assert collector.get_list_of_favorites_books() == []