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
17 changes: 16 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,16 @@
# qa_python
# qa_python
Описание тестов:
test_add_new_book: проверяет, что метод add_new_book успешно добавляет новую книгу в словарь books_genre.
test_parametrized_add_new_book: параметризованный тест, проверяющий различные сценарии добавления книги, включая проверку на длину названия и уникальность.
test_set_book_genre: проверяет, что метод set_book_genre корректно установливает жанр для книги.
test_set_non_existent_genre: проверяет попытку установить несуществующий жанр (жанр книги остаётся пустым).
test_get_books_with_specific_genre: параметризованный тест, проверяющий получение списка книг с определённым жанром.
test_add_book_in_favorites: проверяет, что метод add_book_in_favorites добавляет книги в избранное.
test_add_duplicate_book_in_favorites: проверяет, что попытка добавить одну и ту же книгу в избранное повторно не изменяет список избранного.
test_delete_book_from_favorites: проверяет, что метод delete_book_from_favorites удаляет книги из избранного.
test_get_books_with_specific_genre: проверяет, что метод get_books_with_specific_genre корректно возвращает список книг для заданного жанра.
test_get_list_of_favorites_books: проверяет, что метод get_list_of_favorites_books корректно возвращает список избранных книг.
test_get_book_genre_by_name: проверяет, что метод get_book_genre корректно возвращает жанр для заданной книги.
test_get_books_for_children: проверяет, что метод get_books_for_children корректно возвращает книги, которые подходят детям (у жанра книги нет возрастного рейтинга), и не включает книги с жанрами, имеющими возрастной рейтинг.
test_add_new_two_books: проверяет, что метод add_new_book добавляет две книги
test_get_books_name_and_genre: проверяет, возможность возвратить словарь с жанрами книг, которые были добавлены
131 changes: 107 additions & 24 deletions tests.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,107 @@
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_rating()) == 2

# напиши свои тесты ниже
# чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector()
import pytest

from main import TestBooksCollector

def test_add_new_book():
books_collector = BooksCollector()
books_collector.add_new_book("Книга1")
assert "Книга1" in books_collector.books_genre

@pytest.mark.parametrize("book_name, expected_result", [
("Книга1", True),
("ДлинноеНазваниеКнигиПревышающееМаксимальнуюДопустимуюДлину40Символов", False),
("СуществующаяКнига", True)
])
def test_parametrized_add_new_book(book_name, expected_result):
books_collector = BooksCollector()
books_collector.add_new_book(book_name)
assert (book_name in books_collector.books_genre) == expected_result

def test_set_book_genre():
books_collector = BooksCollector()
books_collector.add_new_book("Детектив1")
books_collector.set_book_genre("Детектив1", "Детективы")
assert books_collector.get_book_genre("Детектив1") == "Детективы"

def test_set_non_existent_genre():
books_collector = BooksCollector()
books_collector.add_new_book("ЖанрНеНайдено")
books_collector.set_book_genre("ЖанрНеНайдено", "НеизвестныйЖанр")
assert books_collector.get_book_genre("ЖанрНеНайдено") == "" # Жанр не установлен

@pytest.mark.parametrize("genre, expected_books", [
("Фантастика", ["КнигаФантастика"]),
("Комедии", [])
])
def test_get_books_with_specific_genre(genre, expected_books):
books_collector = BooksCollector()
if expected_books:
books_collector.add_new_book(expected_books[0])
books_collector.set_book_genre(expected_books[0], genre)
assert books_collector.get_books_with_specific_genre(genre) == expected_books

def test_add_book_in_favorites():
books_collector = BooksCollector()
books_collector.add_new_book("ЛюбимаяКнига")
books_collector.add_book_in_favorites("ЛюбимаяКнига")
assert "ЛюбимаяКнига" in books_collector.favorites

@pytest.mark.parametrize("book_name", ["ПовторяющаясяКнига"])
def test_add_duplicate_book_in_favorites(book_name):
books_collector = BooksCollector()
books_collector.add_new_book(book_name)
books_collector.add_book_in_favorites(book_name)
books_collector.add_book_in_favorites(book_name) # Попытка добавить повторно
assert len(books_collector.favorites) == 1 # Проверяем, что книга добавлена только один раз

def test_delete_book_from_favorites():
books_collector = BooksCollector()
books_collector.add_new_book("КнигаДляУдаления")
books_collector.add_book_in_favorites("КнигаДляУдаления")
books_collector.delete_book_from_favorites("КнигаДляУдаления")
assert "КнигаДляУдаления" not in books_collector.favorites

def test_get_books_with_specific_genre():
books_collector = BooksCollector()
books_collector.add_new_book("КнигаФантастика")
books_collector.set_book_genre("КнигаФантастика", "Фантастика")
books_collector.add_new_book("Детектив1")
books_collector.set_book_genre("Детектив1", "Детективы")
assert books_collector.get_books_with_specific_genre("Фантастика") == ["КнигаФантастика"]
assert books_collector.get_books_with_specific_genre("Детективы") == ["Детектив1"]

def test_get_list_of_favorites_books():
books_collector = BooksCollector()
books_collector.add_new_book("ЛюбимаяКнига")
books_collector.add_book_in_favorites("ЛюбимаяКнига")
assert books_collector.get_list_of_favorites_books() == ["ЛюбимаяКнига"]

def test_get_book_genre_by_name():
books_collector = BooksCollector()
books_collector.add_new_book("Детектив1")
books_collector.set_book_genre("Детектив1", "Детективы")
assert books_collector.get_book_genre_by_name("Детектив1") == "Детективы"

def test_get_books_for_children():
books_collector = BooksCollector()
books_collector.add_new_book("Мультфильм")
books_collector.set_book_genre("Мультфильм", "Мультфильмы")
books_collector.add_new_book("Детектив")
books_collector.set_book_genre("Детектив", "Детективы")
assert "Мультфильм" in books_collector.get_books_for_children()
assert "Детектив" not in books_collector.get_books_for_children()

def test_add_new_two_books():
books_collector = BooksCollector()
books_collector.add_new_book('Книга1')
books_collector.add_new_book('Книга2')
assert len(books_collector.books_genre) == 2

def test_get_books_name_and_genre():
books_collector = BooksCollector()
books_collector.add_new_book("Комедия1")
books_collector.set_book_genre("Комедия1", "Комедии")
books_collector.add_new_book("Ужасы1")
books_collector.set_book_genre("Ужасы1", "Ужасы")
expected_genre_dict = {"Комедия1": "Комедии", "Ужасы1": "Ужасы"}
assert books_collector.get_books_name_and_genre() == expected_genre_dict