Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sprint_2 #2

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
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
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,19 @@
# qa_python
# qa_python

Были реализованы:
test_add_new_book_add_two_books - проверка на возможность добавления двух книг
test_add_new_book_dont_add_book_twice - проверка на то, что книга с одним названием не добавится дважды
test_add_new_book_dont_add_book_with_empty_name - проверка на выставленную валидацию, не добавляет книгу с пустым именем
test_add_new_book_dont_add_book_with_space_in_name - проверка на добавление имени с пробелом в названии, нкжна доработка
test_add_new_book_dont_add_book_with_too_long_name - проверка на выставленную валидацию, не добавляет книгу с длинным названием в 41 символ и более
test_get_book_genre_get_genre_to_added_book - получаем жанр к книге, которой не добавили жанр
test_get_book_genre_get_genre_to_not_added_book - проверяем что не добавит жанр к не добавленной книге
test_set_book_genre_set_random_genre_one_book - добавялем рандомный жанр к книге
test_set_book_genre_set_genre_two_books - добавялем одинаковый жанр к разным книгам, проверяем жанр
test_set_book_genre_set_genre_to_not_added_book - получаем жанр у не добавленной книги
test_get_books_with_specific_genre_two_books_with_one_genre - получаем названия книг по жанру
test_get_books_with_specific_genre_book_with_not_added_genre - проверяем вывод если не добавить жанр книге
test_get_books_for_children_two_books_with_one_adult_genre - добавляем книгу с взрослым жанром и детским жанром, проверяем вывод 1 книги
test_add_book_in_favorites_add_one_book - проверяем добавление книги в любимые
test_add_book_in_favorites_dont_add_one_book_twice - проверяем что книга дважды не добавляется в любимые
test_delete_book_from_favorites_delete_one_book - проверяем что книга удаляется из списка любимых
198 changes: 192 additions & 6 deletions tests.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import random

from main import BooksCollector
import pytest


# класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector
# обязательно указывать префикс Test
Expand All @@ -8,17 +12,199 @@ class TestBooksCollector:
# обязательно указывать префикс test_
# дальше идет название метода, который тестируем add_new_book_
# затем, что тестируем add_two_books - добавление двух книг
def test_add_new_book_add_two_books(self):
@pytest.mark.parametrize(
"first_book,second_book",
[
('Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить'),
('Что делать, если ваш кот хочет вас убить', 'Гордость и предубеждение и зомби')
]
)
def test_add_new_book_add_two_books(
self,
first_book: str,
second_book: str
):
# создаем экземпляр (объект) класса BooksCollector
collector = BooksCollector()

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

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

def test_add_new_book_dont_add_book_twice(
self,
):
collector = BooksCollector()
collector.add_new_book('Гордость и предубеждение и зомби')
collector.add_new_book('Гордость и предубеждение и зомби')

assert len(collector.get_books_genre()) == 1

def test_add_new_book_dont_add_book_with_empty_name(
self,
):
collector = BooksCollector()
collector.add_new_book('')

assert len(collector.get_books_genre()) == 0

@pytest.mark.xfail
def test_add_new_book_dont_add_book_with_space_in_name(
self,
):
collector = BooksCollector()
collector.add_new_book(' ')

assert len(collector.get_books_genre()) == 0

def test_add_new_book_dont_add_book_with_too_long_name(
self,
):
collector = BooksCollector()
collector.add_new_book('01234567890123456789012345678901234567891')

assert len(collector.get_books_genre()) == 0

def test_get_book_genre_get_genre_to_added_book(
self,
):
first_book = 'Гордость и предубеждение и зомби'
collector = BooksCollector()
collector.add_new_book(first_book)

assert collector.get_book_genre(name=first_book) == ''

def test_get_book_genre_get_genre_to_not_added_book(
self,
):
first_book = 'Гордость и предубеждение и зомби'
collector = BooksCollector()

assert collector.get_book_genre(name=first_book) is None

def test_set_book_genre_set_random_genre_one_book(
self,
):
first_book = 'Гордость и предубеждение и зомби'
collector = BooksCollector()
collector.add_new_book(first_book)
gener = collector.genre[random.randint(0, 4)]
collector.set_book_genre(name=first_book, genre=gener)

assert collector.get_book_genre(name=first_book) == gener

@pytest.mark.parametrize(
"first_book,second_book,genre",
[
('Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить', 'Ужасы'),
('Что делать, если ваш кот хочет вас убить', 'Гордость и предубеждение и зомби', 'Фантастика')
]
)
def test_set_book_genre_set_genre_two_books(
self,
first_book: str,
second_book: str,
genre: str
):
collector = BooksCollector()
collector.add_new_book(first_book)
collector.add_new_book(second_book)
collector.set_book_genre(name=first_book, genre=genre)
collector.set_book_genre(name=second_book, genre=genre)

assert len(collector.get_books_genre().values()) == 2

def test_set_book_genre_set_genre_to_not_added_book(
self,
):
first_book = 'Гордость и предубеждение и зомби'
collector = BooksCollector()
gener = collector.genre[random.randint(0, 4)]
collector.set_book_genre(name=first_book, genre=gener)

assert collector.get_book_genre(name=first_book) is None

@pytest.mark.parametrize(
"first_book,second_book,genre",
[
('Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить', 'Ужасы'),
('Что делать, если ваш кот хочет вас убить', 'Гордость и предубеждение и зомби', 'Фантастика')
]
)
def test_get_books_with_specific_genre_two_books_with_one_genre(
self,
first_book: str,
second_book: str,
genre: str
):
collector = BooksCollector()
collector.add_new_book(first_book)
collector.add_new_book(second_book)
collector.set_book_genre(name=first_book, genre=genre)
collector.set_book_genre(name=second_book, genre=genre)

assert len(collector.get_books_with_specific_genre(genre)) == 2

def test_get_books_with_specific_genre_book_with_not_added_genre(
self,
):
collector = BooksCollector()
collector.add_new_book('Гордость и предубеждение и зомби')
collector.set_book_genre(name='Гордость и предубеждение и зомби', genre='Ужасы')

assert len(collector.get_books_with_specific_genre('Фантастика')) == 0

@pytest.mark.parametrize(
"first_book,second_book,first_genre,second_genre",
[
('Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить', 'Ужасы', 'Фантастика'),
('Что делать, если ваш кот хочет вас убить', 'Гордость и предубеждение и зомби', 'Фантастика', 'Ужасы')
]
)
def test_get_books_for_children_two_books_with_one_adult_genre(
self,
first_book: str,
second_book: str,
first_genre: str,
second_genre: str
):
collector = BooksCollector()
collector.add_new_book(first_book)
collector.add_new_book(second_book)
collector.set_book_genre(name=first_book, genre=first_genre)
collector.set_book_genre(name=second_book, genre=second_genre)

assert len(collector.get_books_for_children()) == 1

def test_add_book_in_favorites_add_one_book(
self,
):
collector = BooksCollector()
collector.add_new_book('Гордость и предубеждение и зомби')
collector.add_book_in_favorites('Гордость и предубеждение и зомби')

assert len(collector.get_list_of_favorites_books()) == 1

def test_add_book_in_favorites_dont_add_one_book_twice(
self,
):
collector = BooksCollector()
collector.add_new_book('Гордость и предубеждение и зомби')
collector.add_book_in_favorites('Гордость и предубеждение и зомби')
collector.add_book_in_favorites('Гордость и предубеждение и зомби')

assert len(collector.get_list_of_favorites_books()) == 1

def test_delete_book_from_favorites_delete_one_book(
self,
):
collector = BooksCollector()
collector.add_new_book('Гордость и предубеждение и зомби')
collector.add_book_in_favorites('Гордость и предубеждение и зомби')
collector.delete_book_from_favorites('Гордость и предубеждение и зомби')

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