-
Notifications
You must be signed in to change notification settings - Fork 0
Sprint_2 #4
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?
Sprint_2 #4
Changes from all commits
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 |
|---|---|---|
| @@ -1 +1,25 @@ | ||
| # qa_python | ||
| # qa_python | ||
| ## Описание проекта | ||
| Этот проект содержит автоматизированные тесты для класса BooksCollector, который управляет коллекцией книг с жанрами и функционалом избранного. | ||
|
|
||
| ## Основные возможности | ||
| Тесты для всех основных методов класса BooksCollector | ||
|
|
||
| Параметризованные тесты для граничных случаев | ||
|
|
||
| Изоляция тестов с помощью фикстуры вынесенной в conftest.py | ||
|
|
||
| Полное покрытие позитивных и негативных сценариев | ||
|
|
||
| ## Покрытие тест-кейсов | ||
| Добавление книг с проверкой имени | ||
|
|
||
| Назначение и проверка жанров | ||
|
|
||
| Управление избранным | ||
|
|
||
| Фильтрация по жанрам | ||
|
|
||
| Фильтрация по возрастному рейтингу | ||
|
|
||
| Добавлены отдельные тесты для add_new_book и get_books_genre() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| conftest.py | ||
| #Фикстура collector - создает новый экземпляр класса для каждого теста | ||
| @pytest.fixture | ||
| def collector(self): | ||
| return BooksCollector() |
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,95 @@ | ||
| import pytest | ||
| from main import BooksCollector | ||
|
|
||
| class TestBooksCollector: | ||
|
|
||
| # Тесты для add_new_book | ||
| # Проверяем корректность добавления новых книг с разными названиями | ||
| @pytest.mark.parametrize('name, expected', [ | ||
| ('Мастер и Маргарита', True), | ||
| ('', False), | ||
| ('X' * 41, False), | ||
| ('X' * 40, True) | ||
| ]) | ||
| def test_add_new_book(self, collector, name, expected): | ||
| collector.add_new_book(name) | ||
| assert (name in collector.get_books_genre()) == expected | ||
| # Тестирование добавления книг | ||
| def test_get_books_genre_returns_correct_dict(self, collector): | ||
| collector.add_new_book('Мастер и Маргарита') | ||
| collector.add_new_book('Онегин') | ||
| collector.set_book_genre('Мастер и Маргарита', 'Драма') | ||
| expected = {'Мастер и Маргарита': 'Драма', 'Онегин': ''} | ||
| assert collector.get_books_genre() == expected | ||
| # Тестирование метода set_book_genre() - невалидные случаи | ||
| def test_set_book_genre_invalid(self, collector): | ||
| collector.add_new_book('1984') | ||
| collector.set_book_genre('1984', 'Несуществующий жанр') | ||
| assert collector.get_book_genre('1984') == '' | ||
|
|
||
| # Тест только для test_book_addition_success | ||
| def test_book_addition_success(self, collector): | ||
| collector.add_new_book('Мастер и Маргарита') | ||
| assert 'Мастер и Маргарита' in collector.books_genre # Прямой доступ к словарю | ||
| # Тест только для get_book_genre | ||
| def test_get_book_genre(self, collector): | ||
| collector.books_genre = {'Убийство в Восточном экспрессе': 'Детективы'} | ||
| assert collector.get_book_genre('Убийство в Восточном экспрессе') == 'Детективы' | ||
| # Проверяем, что set_book_genre устанавливает жанр при использовании книги из books_genre и жанра из genre | ||
| def test_set_book_genre_valid_genre_is_set(self, collector): | ||
| collector.add_new_book('Десять негритят') | ||
| collector.set_book_genre('Десять негритят', 'Детективы') | ||
| assert collector.books_genre['Десять негритят'] == 'Детективы' | ||
| # Проверяем что get_books_with_specific_genre возвращает книги определенного жанра | ||
| # Запрашиваем книги определенного жанра ('Фантастика') | ||
| def test_get_books_with_specific_genre(self, collector): | ||
| collector.add_new_book('Гарри Поттер и философский камень') | ||
| collector.add_new_book('Оно') | ||
| collector.set_book_genre('Гарри Поттер и философский камень', 'Фантастика') | ||
| collector.set_book_genre('Оно', 'Ужасы') | ||
| assert collector.get_books_with_specific_genre('Фантастика') == ['Гарри Поттер и философский камень'] | ||
|
|
||
| # Проверяем что метод get_books_for_children возвращает только детскую книгу | ||
| def test_get_books_for_children(self, collector): | ||
| collector.add_new_book('Винни-Пух') | ||
| collector.add_new_book('Дракула') | ||
| collector.set_book_genre('Винни-Пух', 'Мультфильмы') | ||
| collector.set_book_genre('Дракула', 'Ужасы') | ||
| assert collector.get_books_for_children() == ['Винни-Пух'] | ||
|
|
||
| # Проверяем, что add_book_in_favorites добавляет книгу в избранное | ||
| def test_add_book_in_favorites(self, collector): | ||
| collector.add_new_book('Три товарища') | ||
| collector.add_book_in_favorites('Три товарища') | ||
| assert 'Три товарища' in collector.get_list_of_favorites_books() | ||
| # Проверяем, что add_book_in_favorites не добавляет повторно книгу в избранное | ||
| def test_add_book_in_favorites_twice(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 | ||
|
|
||
| # Проверяем метод delete_book_from_favorites для удаления из избранного | ||
| def test_delete_book_from_favorites(self, collector): | ||
| collector.add_new_book('Анна Каренина') | ||
| collector.add_book_in_favorites('Анна Каренина') | ||
| collector.delete_book_from_favorites('Анна Каренина') | ||
| assert 'Анна Каренина' not in collector.get_list_of_favorites_books() | ||
|
|
||
| # Проверяем, что метод get_list_of_favorites_books возвращает обе книги | ||
| # Проверяем корректность работы со списком избранного | ||
| def test_get_list_of_favorites_books(self, collector): | ||
| collector.add_new_book('Скотный двор') | ||
| collector.add_new_book('Мы') | ||
| collector.add_book_in_favorites('Скотный двор') | ||
| collector.add_book_in_favorites('Мы') | ||
| assert collector.get_list_of_favorites_books() == ['Скотный двор', 'Мы'] | ||
|
|
||
| # Проверяем что метод get_book_genre возвращает правильный жанр | ||
| def test_get_book_genre(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. Нужно исправить: тест аналогичен set_book_genre. Попробуй установить значение жанра иначе, или иначе получить его для сравнения. Используй доступ к словарю. В идеале - в каждом тесте нужно использовать только один проверяемый метод |
||
| collector.add_new_book('Убийство в Восточном экспрессе') | ||
| collector.set_book_genre('Убийство в Восточном экспрессе', 'Детективы') | ||
| assert collector.get_book_genre('Убийство в Восточном экспрессе') == 'Детективы' | ||
|
|
||
|
|
||
|
|
||
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.
Нужно исправить: нужны отдельные тесты для add_new_book и get_books_genre()