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 .vscode/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
58 changes: 57 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,57 @@
# qa_python
# qa_python

Реализованные тесты:

1. test_add_new_book_title_less_than40_successfull (параметризованный)
Проверка правильности добавления книги при длине названия не больше 40 символов

2. test_add_new_book_title_greater_than40_unsuccessfull (параметризованный)
Проверка корректности работы (книга не добавляется) при добавлении книги с названием длинее 40 символов

3. test_add_new_book_twice_unsuccessfull
Проверка корректности работы при добавлении одной и той же книги дважды (должна добавиться только один раз)

4. test_get_books_genre_from_list_successfull (параметризованный)
Проверка правильности получения словаря книг

5. test_set_book_genre_from_list_successfull (параметризованный)
Проверка правильности назначения жанра книге (жанр из списка)

6. test_get_book_genre_from_list_successfull (параметризованный)
Проверка правильности получения жанра книни (жанр из списка)

7. test_set_book_genre_not_from_list_unsuccessfull (параметризованный)
Проверка корректности работы при назначении жанра не из списка (в поле жанр ожидается пустая строка)

8. test_get_book_genre_not_from_list_empty_string
Проверка корректности работы при получении жанра у книги, не добавленной в список (ожидается что результат None)

9. test_get_books_with_specific_genre_from_list_successfull
Проверка правильности работы при запросе списка книг конкретных жанров из списка

10. test_get_books_with_specific_genre_not_from_list_empty_list
Проверка корректности работы при запросе списка книг конкретного жанра, если в списке нет книг с таким жанром (ожидаетсяя пустой список)

11. test_get_books_for_children_not_from_age_genre_rating_successfull
Проверка правильности запроса книг для детей (ожидается что в списке не будет книг с возрастным ограничением)

12. test_get_books_for_children_from_age_genre_rating_empty_list
Проверка корректности работы при запросе книг для детей, при этом в списке нет таких книг (ожидается пустой список)

13. test_add_book_in_favorites_from_books_genre_list_successfull (параметризованный)
Проверка правильности добавления книги в избранное

14. test_get_list_of_favorites_books_from_books_genre_list_successfull (параметризованный)
Проверка правильности получения списка избранных книг

15. test_add_book_in_favorites_not_from_books_genre_list_empty_list
Проверка корректности работы при добавлении книги в избранное, которой нет в списке книг (ожидается, что список избранных книг пустой)

16. test_add_book_in_favorites_from_books_genre_list_twice_len_favorites_1
Проверка корректности добавления одной и той же книги дважды в список избранных (ожидается, что в список книга будет добавлена один раз)

17. test_delete_book_from_favorites_book_in_favorites_list_successfull
Проверка правильности удаления книги из списка избранных

18. test_delete_book_from_favorites_book_not_in_favorites_list_unsuccessfull
Проверка корректности работы при удалении книги из списка избранных, которой нет в этом списке
2 changes: 2 additions & 0 deletions __pycache__/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*
!.gitignore
Binary file removed __pycache__/main.cpython-38.pyc
Binary file not shown.
Binary file removed __pycache__/test.cpython-38-pytest-7.1.2.pyc
Binary file not shown.
8 changes: 8 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import pytest
from main import BooksCollector

@pytest.fixture
def collector():
collector = BooksCollector()

return collector
207 changes: 191 additions & 16 deletions tests.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,199 @@
from main import BooksCollector
import pytest

# класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector
# обязательно указывать префикс Test
class TestBooksCollector:

# пример теста:
# обязательно указывать префикс test_
# дальше идет название метода, который тестируем add_new_book_
# затем, что тестируем add_two_books - добавление двух книг
def test_add_new_book_add_two_books(self):
# создаем экземпляр (объект) класса BooksCollector
collector = BooksCollector()
@pytest.mark.parametrize("name", ['Чебурашка', 'Гордость и предубеждение и зомби', 'Гордость и предубеждение и зомби .......'])
def test_add_new_book_title_less_than40_successfull(self, collector, name):
collector.add_new_book(name)

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

# проверяем, что добавилось именно две
# словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2
assert len(collector.get_books_rating()) == 2
@pytest.mark.parametrize("name", ['Гордость и предубеждение и зомби и пираты карибского моря',
'Ехала машина полный бак бензина ехала ехала и в гараж заехала',
'По поля по полям синий трактор едет к нам'])
def test_add_new_book_title_greater_than40_unsuccessfull(self, collector, name):
collector.add_new_book(name)

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

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

assert len(collector.books_genre) == 1

@pytest.mark.parametrize("name", ['Чебурашка', 'Гордость и предубеждение и зомби', 'Гордость и предубеждение и зомби .......'])
def test_get_books_genre_from_list_successfull(self, collector, name):
collector.add_new_book(name)

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

@pytest.mark.parametrize('name,genre', [['Гордость и предубеждение', 'Детективы'], ['Преступление и наказание', 'Ужасы']])
def test_set_book_genre_from_list_successfull(self, collector, name, genre):
collector.add_new_book(name)
collector.set_book_genre(name, genre)

assert collector.books_genre[name] == genre

@pytest.mark.parametrize('name,genre', [['Гордость и предубеждение', 'Детективы'], ['Преступление и наказание', 'Ужасы']])
def test_get_book_genre_from_list_successfull(self, collector, name, genre):
collector.add_new_book(name)
collector.set_book_genre(name, genre)

assert collector.get_book_genre(name) == genre

@pytest.mark.parametrize('name,genre', [['Гордость и предубеждение', 'Драма'], ['Игра в кальмара', 'Дорама']])
def test_set_book_genre_not_from_list_unsuccessfull(self, collector, name, genre):
collector.add_new_book(name)
collector.set_book_genre(name, genre)

assert collector.books_genre[name] == ''

def test_get_book_genre_not_from_list_empty_string(self, collector):
name = 'Гордость и предубеждение'
genre = 'Детективы'
collector.add_new_book(name)
collector.set_book_genre(name, genre)
wrong_name = "Преступление и наказание"

assert collector.get_book_genre(wrong_name) is None

def test_get_books_with_specific_genre_from_list_successfull(self, collector):
name1 = 'Гордость и предубеждение'
genre1 = 'Детективы'

collector.add_new_book(name1)
collector.set_book_genre(name1, genre1)

name2 = 'Преступление и наказание'
genre2 = 'Детективы'

collector.add_new_book(name2)
collector.set_book_genre(name2, genre2)

name3 = 'Один дома'
genre3 = 'Комедии'

collector.add_new_book(name3)
collector.set_book_genre(name3, genre3)

assert len(collector.get_books_with_specific_genre(genre2)) == 2
assert len(collector.get_books_with_specific_genre(genre3)) == 1


def test_get_books_with_specific_genre_not_from_list_empty_list(self, collector):
name1 = 'Гордость и предубеждение'
genre1 = 'Детективы'

collector.add_new_book(name1)
collector.set_book_genre(name1, genre1)

name2 = 'Преступление и наказание'
genre2 = 'Детективы'

collector.add_new_book(name2)
collector.set_book_genre(name2, genre2)

name3 = 'Один дома'
genre3 = 'Комедии'

collector.add_new_book(name3)
collector.set_book_genre(name3, genre3)

assert len(collector.get_books_with_specific_genre('Мультфильмы')) == 0

def test_get_books_for_children_not_from_age_genre_rating_successfull(self, collector):
name1 = 'Алёша Попович'
genre1 = 'Комедии'

collector.add_new_book(name1)
collector.set_book_genre(name1, genre1)

name2 = 'Преступление и наказание'
genre2 = 'Детективы'

collector.add_new_book(name2)
collector.set_book_genre(name2, genre2)

name3 = 'Простоквашино'
genre3 = 'Мультфильмы'

collector.add_new_book(name3)
collector.set_book_genre(name3, genre3)

assert len(collector.get_books_for_children()) == 2
assert 'Преступление и наказание' not in collector.get_books_for_children()

def test_get_books_for_children_from_age_genre_rating_empty_list(self, collector):
name1 = 'Гордость и предубеждение'
genre1 = 'Детективы'

collector.add_new_book(name1)
collector.set_book_genre(name1, genre1)

name2 = 'Преступление и наказание'
genre2 = 'Детективы'

collector.add_new_book(name2)
collector.set_book_genre(name2, genre2)

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

@pytest.mark.parametrize('name', ['Гордость и предубеждение', 'Преступление и наказание'])
def test_add_book_in_favorites_from_books_genre_list_successfull(self, collector, name):
collector.add_new_book(name)
collector.add_book_in_favorites(name)

assert len(collector.favorites) == 1

@pytest.mark.parametrize('name', ['Гордость и предубеждение', 'Преступление и наказание'])
def test_get_list_of_favorites_books_from_books_genre_list_successfull(self, collector, name):
collector.add_new_book(name)
collector.add_book_in_favorites(name)

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

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

name2 = 'Преступление и наказание'
collector.add_book_in_favorites(name2)

assert len(collector.favorites) == 0

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

assert len(collector.favorites) == 1

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

name2 = 'Простоквашино'

collector.add_new_book(name2)
collector.add_book_in_favorites(name2)

assert len(collector.favorites) == 2
collector.delete_book_from_favorites(name)
assert len(collector.favorites) == 1

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

name2 = 'Простоквашино'
collector.add_new_book(name2)

assert len(collector.favorites) == 1
collector.delete_book_from_favorites(name2)
assert len(collector.favorites) == 1