Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
__pycache__
4 changes: 3 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
class BooksCollector:


class BooksCollector:
def __init__(self):
self.books_genre = {}
self.favorites = []
Expand Down Expand Up @@ -55,3 +56,4 @@ def delete_book_from_favorites(self, name):
# получаем список Избранных книг
def get_list_of_favorites_books(self):
return self.favorites

120 changes: 104 additions & 16 deletions tests.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,112 @@
import pytest
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
def test_add_new_book(self):
collector = BooksCollector()
n = 'Гарри Поттер'

collector.add_new_book(n)

assert n in collector.books_genre

def test_set_book_genre(self):
collector = BooksCollector()

collector.add_new_book('Гарри Поттер')
collector.set_book_genre('Гарри Поттер', 'Фантастика')

assert collector.get_book_genre('Гарри Поттер') == 'Фантастика'

def test_get_book_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.add_new_book('Властелин колец')

collector.set_book_genre('Гарри Поттер', 'Фантастика')
collector.set_book_genre('Властелин колец', 'Фантастика')

assert collector.get_books_with_specific_genre('Фантастика') == [
'Гарри Поттер',
'Властелин колец'
]

def test_get_books_genre(self):
collector = BooksCollector()

collector.add_new_book('Гарри Поттер')

assert collector.get_books_genre() == {
'Гарри Поттер': ''
}

@pytest.mark.parametrize(
'book_genre, expected',
[
('Фантастика', True),
('Мультфильмы', True),
('Комедии', True),
('Ужасы', False),
('Детективы', False)
]
)
def test_get_books_for_children(self, book_genre, expected):
collector = BooksCollector()

collector.add_new_book('Книга')
collector.set_book_genre('Книга', book_genre)

result = 'Книга' in collector.get_books_for_children()

assert result == expected

def test_add_book_in_favorites(self):
collector = BooksCollector()

# добавляем две книги
collector.add_new_book('Гордость и предубеждение и зомби')
collector.add_new_book('Что делать, если ваш кот хочет вас убить')
collector.add_new_book('Гарри Поттер')
collector.add_book_in_favorites('Гарри Поттер')

assert collector.get_list_of_favorites_books() == [
'Гарри Поттер'
]

def test_add_book_in_favorites_twice(self):
collector = BooksCollector()

collector.add_new_book('Гарри Поттер')
collector.add_book_in_favorites('Гарри Поттер')
collector.add_book_in_favorites('Гарри Поттер')

assert collector.get_list_of_favorites_books() == [
'Гарри Поттер'
]

def test_delete_book_from_favorites(self):
collector = BooksCollector()

collector.add_new_book('Гарри Поттер')
collector.add_book_in_favorites('Гарри Поттер')
collector.delete_book_from_favorites('Гарри Поттер')

assert collector.get_list_of_favorites_books() == []

def test_get_list_of_favorites_books(self):
collector = BooksCollector()

# проверяем, что добавилось именно две
# словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2
assert len(collector.get_books_rating()) == 2
collector.add_new_book('Гарри Поттер')
collector.add_book_in_favorites('Гарри Поттер')

# напиши свои тесты ниже
# чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector()
assert collector.get_list_of_favorites_books() == [
'Гарри Поттер'
]