-
Notifications
You must be signed in to change notification settings - Fork 0
Sprint_4_ettempt#2 #7
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
base: main
Are you sure you want to change the base?
Changes from all commits
add42f3
0b841af
c7cf98b
a4a26fa
31a08f6
70580a9
f17f0aa
b946b74
12d7731
24c8db1
ed2751e
4513959
418235c
4583289
9c18f57
b2f364c
9388abc
9caee6a
8ee6fd9
b014ea8
946bdd7
a86322b
5ca7269
3931a29
3c248ca
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| from main import BooksCollector | ||
| import pytest | ||
| @pytest.fixture | ||
| def collector(): | ||
| return BooksCollector() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| 1 тест(базовый) add_new_book_add_two_books проверяет добавление 2 новых книг в словарь без указания жанра | ||
| 2 тест test_add_new_book__len_more_than_40_failed проверяет, что в словарь не добавляются книги, название которых более 40 символов | ||
| 3 тест test_add_book_in_favorites_sucсess проверяет успешное добавление книги в избранное | ||
| 4 тест test_add_book_in_favorites_two_equal_books_failed проверяет, что повторно одна и та же книга в избранное не добавляется | ||
| 5 тест test_delete_book_from_favorites_success проверяет удаление книги из избранного | ||
| 6 тест test_set_book_genre_in_list_success проверяет корректность присвоения методом жанра книги и возврат установленного жанра | ||
| 7 тест test_set_book_genre_assign_genre_not_inlist_failed проверяет, что метод не присваевает книге невалидный жанр | ||
| 8 тест test_get_book_genre_by_name_success проверяет вывод жанра книги по ее названию | ||
| 9 тест test_get_books_with_specific_genre_success проверяет список книг с определённым жанром | ||
| 10 тест test_get_books_for_children_success проверяет книги, которые подходят детям(у которых не установлен специальный рейтинг | ||
| 11 тест test_get_list_of_favorites_books_success проверяет, что после добавления книги в избранное, книга добавляется в избранное | ||
| 12 тест test_get_book_genre_success проверяет, что метод выводит ожидаемый результат из добавленных книг и их жанров |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,24 +1,94 @@ | ||
| from main import BooksCollector | ||
|
|
||
| # класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector | ||
| # обязательно указывать префикс Test | ||
| import pytest | ||
| 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, collector): | ||
| collector.add_new_book('Гордость и предубеждение и зомби') | ||
| collector.add_new_book('Что делать, если ваш кот хочет вас убить') | ||
| assert len(collector.get_books_genre()) == 2 | ||
|
|
||
| def test_add_new_book_len_more_than_40_failed(self, collector): | ||
| collector.add_new_book('Сказка о царе Салтане, о сыне его славном и могучем богатыре князе Гвидоне Салтановиче и о прекрасной Царевне Лебеди') | ||
| assert len(collector.get_books_genre()) == 0 | ||
|
|
||
| def test_add_book_in_favorites_sucсess(self, collector): | ||
| collector.add_new_book('Преступление и наказание') | ||
| collector.add_book_in_favorites('Преступление и наказание') | ||
| assert len(collector.get_list_of_favorites_books()) == 1 | ||
|
|
||
| def test_add_book_in_favorites_two_equal_books_failed(self, collector): | ||
| 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_success(self, collector): | ||
| collector.add_new_book('Сказка о золотой рыбке') | ||
| collector.add_book_in_favorites('Сказка о золотой рыбке') | ||
| collector.delete_book_from_favorites('Сказка о золотой рыбке') | ||
| assert len(collector.get_list_of_favorites_books()) == 0 | ||
|
|
||
| @pytest.mark.parametrize('genre', ['Фантастика', 'Ужасы', 'Детективы', 'Мультфильмы', 'Комедии']) | ||
| def test_set_book_genre_in_list_success(self, genre, collector): | ||
| collector.add_new_book('Бегущий по лезвию') | ||
| collector.set_book_genre('Бегущий по лезвию', genre) | ||
| assert collector.get_book_genre('Бегущий по лезвию') == genre | ||
|
|
||
| @pytest.mark.parametrize('genre_not_inlist', ['Триллер', 'Мелодрама']) | ||
| def test_set_book_genre_not_inlist_failed(self, genre_not_inlist, collector): | ||
| collector.add_new_book('Поющие в терновнике') | ||
| collector.set_book_genre('Поющие в терновнике', genre_not_inlist) | ||
| assert collector.get_book_genre('Поющие в терновнике') != genre_not_inlist | ||
|
|
||
| @pytest.mark.parametrize('name,genre', [ | ||
| ['Заживо в темноте', 'Ужасы'], | ||
| ['Золотой теленок', 'Комедии'], | ||
| ['Восточный экспресс', 'Детективы'] | ||
| ] | ||
| ) | ||
| def test_get_book_genre_by_name_success(self, name, genre, collector): | ||
| collector.books_genre[name] = genre | ||
| assert collector.get_book_genre(name) == genre | ||
|
|
||
|
|
||
| @pytest.mark.parametrize('name,genre', [ | ||
| ['Заживо в темноте', 'Ужасы'], | ||
| ['Восточный экспресс', 'Детективы'] | ||
| ] | ||
| ) | ||
| def test_get_books_with_specific_genre_success(self, name, genre, collector): | ||
| collector.add_new_book(name) | ||
| collector.set_book_genre(name, genre) | ||
| books_with_specific_genre = collector.get_books_with_specific_genre(genre) | ||
| assert name in books_with_specific_genre | ||
|
|
||
| @pytest.mark.parametrize('name,genre,specific_genre', [ | ||
| ['Заживо в темноте', 'Ужасы', True], | ||
| ['Восточный экспресс', 'Детективы', True], | ||
| ['Золотой ключик','Мультфильм', False] | ||
| ] | ||
| ) | ||
| def test_get_books_for_children_success(self, name, genre, specific_genre, collector): | ||
| collector.add_new_book(name) | ||
| collector.set_book_genre(name, genre) | ||
| books_with_specific_genre = collector.get_books_with_specific_genre(specific_genre) | ||
| books_for_children = collector.get_books_for_children() | ||
| assert (name in books_for_children) != books_with_specific_genre | ||
|
|
||
| # проверяем, что добавилось именно две | ||
| # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 | ||
| assert len(collector.get_books_rating()) == 2 | ||
| def test_get_list_of_favorites_books_success(self, collector): | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Нужно исправить: тест аналогичен тесту добавления в избранное. Тут нужно проверить, что возвращается именно нужный список. Метод добавления в список можно не использовать, а создать его напрямую
Owner
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. исправлено |
||
| collector.favorites = ['Золотой ключик'] | ||
| assert collector.get_list_of_favorites_books() == ['Золотой ключик'] | ||
|
|
||
| def test_get_book_genre_success(self, collector): | ||
| collector.add_new_book('Заживо в темноте') | ||
| collector.set_book_genre('Заживо в темноте', 'Ужасы') | ||
| collector.add_new_book('Золотой теленок') | ||
| collector.set_book_genre('Золотой теленок', 'Комедии') | ||
| collector.add_new_book('Восточный экспресс') | ||
| collector.set_book_genre('Восточный экспресс', 'Детективы') | ||
| assert collector.get_books_genre() == { | ||
| 'Заживо в темноте':'Ужасы', | ||
| 'Золотой теленок':'Комедии', | ||
| 'Восточный экспресс':'Детективы' | ||
| } | ||
|
|
||
| # напиши свои тесты ниже | ||
| # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нужно исправить: тест все еще не отличается от теста установки жанра. Нужно либо не использовать в этом тесте set метод, либо сравнивать с содержимым словаря
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
исправлено