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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
__pycache__/
*.pyc
18 changes: 17 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,17 @@
# qa_python
# qa_python# Последние изменения
Тесты на добавление книг:
add_new_book: Проверяется успешное добавление двух книг в коллекцию. После добавления количество книг должно равняться двум.
Тесты на установку жанра книге:
set_book_genre: Проверяется установка конкретного жанра («Фантастика») одной из книг коллекции.
Тесты на получение жанра книги:
get_book_genre: Подтверждается правильность присвоенного ранее жанра конкретной книге.
Тесты на фильтрацию книг по жанру:
get_books_with_specific_genre: Выбираются книги заданного жанра («Фантастика»), и проверка результата подтверждает наличие соответствующих книг в списке.
Тесты на выбор детских книг:
get_books_for_children: Система должна исключить из списка взрослые произведения («Ужасы») и включить детские («Мультфильм»).
Тесты на добавление книг в "избранное":
add_book_in_favorites: Пользователь добавляет книгу в избранные, и проверка подтверждает её присутствие среди фаворитов.
Тест на удаление из избранного:
delete_book_from_favorites: Удаление книги из избранных и подтверждение отсутствия удалённой книги в итоговом списке.
Тест на вывод пустого списка избранных книг:
get_list_of_favorites_books: оОтсутствие книг в пустом списке избранных.
6 changes: 6 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import pytest
from main import BooksCollector

@pytest.fixture
def books_collector():
return BooksCollector()
81 changes: 62 additions & 19 deletions tests.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,67 @@
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()
def test_add_new_book_add_two_books(self, books_collector):
books_collector.add_new_book('Гордость и предубеждение и зомби')
books_collector.add_new_book('Что делать, если ваш кот хочет вас убить')
assert len(books_collector.get_books_genre()) == 2

# Тест метода set_book_genre
def test_set_book_genre(self, books_collector):
books_collector.add_new_book('Книга1')
books_collector.set_book_genre('Книга1', 'Фантастика')
assert books_collector.get_book_genre('Книга1') == 'Фантастика'

# Тест метода get_book_genre
def test_get_book_genre_no_genre(self, books_collector):
books_collector.add_new_book('Вишневый сад')
result = books_collector.get_book_genre('Вишневый сад')
assert result is None or result == ''

# Тест метода get_books_with_specific_genre
def test_get_books_with_specific_genre(self, books_collector):
books_collector.add_new_book('Оно')
books_collector.set_book_genre('Оно', 'Ужасы')
books_collector.add_new_book('Марсианин')
books_collector.set_book_genre('Марсианин', 'Фантастика')
books_collector.add_new_book('Пикник на обочине')
books_collector.set_book_genre('Пикник на обочине', 'Фантастика')
result = books_collector.get_books_with_specific_genre("Фантастика")
assert result == ['Марсианин', 'Пикник на обочине']

# Тест метода get_books_for_children
def test_get_books_for_children_exclude_adult_books(self, books_collector):
books_collector.add_new_book('Психо')
books_collector.set_book_genre('Психо', 'Ужасы')
books_collector.add_new_book('Оно')
books_collector.set_book_genre('Оно', 'Ужасы')
books_collector.add_new_book('Ну, погоди!')
books_collector.set_book_genre('Ну, погоди!', 'Мультфильмы')
result = books_collector.get_books_for_children()
assert 'Ну, погоди!' in result
assert 'Психо' not in result
assert 'Оно' not in result

# Тест метода add_book_in_favorites
def test_add_book_in_favorites_success(self, books_collector):
books_collector.add_new_book('Оно')
books_collector.set_book_genre('Оно', 'Ужасы')
books_collector.add_book_in_favorites('Оно')
assert 'Оно' in books_collector.get_list_of_favorites_books()

# добавляем две книги
collector.add_new_book('Гордость и предубеждение и зомби')
collector.add_new_book('Что делать, если ваш кот хочет вас убить')
# Тест метода delete_book_from_favorites
def test_delete_book_from_favorites_success(self, books_collector):
books_collector.add_new_book('Оно')
books_collector.set_book_genre('Оно', 'Ужасы')
books_collector.add_book_in_favorites('Оно')
books_collector.delete_book_from_favorites('Оно')
assert 'Оно' not in books_collector.get_list_of_favorites_books()

# проверяем, что добавилось именно две
# словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2
assert len(collector.get_books_rating()) == 2
# Тест метода get_list_of_favorites_books
def test_get_list_of_favorites_empty(self, books_collector):
result = books_collector.get_list_of_favorites_books()
assert result == []

# напиши свои тесты ниже
# чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector()
# Тест метода get_books_genre
def test_get_books_genre_empty(self, books_collector):
result = books_collector.get_books_genre()
assert result == {}