Skip to content

Sprint_4#6

Open
AnnaShamraeva wants to merge 10 commits intomainfrom
develop
Open

Sprint_4#6
AnnaShamraeva wants to merge 10 commits intomainfrom
develop

Conversation

@AnnaShamraeva
Copy link
Owner

No description provided.

tests.py Outdated
def test_add_new_book_add_two_books(self):
# создаем экземпляр (объект) класса BooksCollector
collector = BooksCollector()
@pytest.fixture # создаем функцию для создания тестовых объектов в начале тестов после класса
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно исправить: перенести фикстуру в файл conftest

tests.py Outdated
@pytest.mark.parametrize('genre', ['Фантастика', 'Ужасы', 'Детективы', 'Мультфильмы', 'Комедии'])
# с помощью @pytest.mark.parametrize тест будет выполнен для каждого жанра из списка
def test_init_all_genre_exist(self, collector, genre):
assert genre in collector.genre # проверяем жанр на наличие в списке genre
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно исправить: мы тестируем не атрибуты экземпляров класса, а методы приложения. Необходимо добавить шаги в которых будут использованы методы и проверить результат.


def test_get_book_genre_return_genre_set(self, collector):
assert collector.get_books_genre('Новая книга ужасов') == 'Ужасы'
# здесь и далее замена создания объекта (экземпляра класса) на использование фикстуры collector через параметр

This comment was marked as outdated.

tests.py Outdated
@pytest.mark.parametrize('invalid_genre', ['Комиксы', ' ', '666', None])
def test_init_all_genre_is_invalid(self, collector, invalid_genre):
collector.set_book_genre('Книга', invalid_genre)
assert collector.get_books_genre('Книга') != invalid_genre
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

есть конкретное ожидание чему жанр должен быть равен в данном тесте, нужно сделать проверку более точной

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Предыдущая проверка направлена на проверку ожидаемого жанра из списка

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

нет, предыдущая проверка не проверят этого. В случае попытки присвоить невалидный жанр, жанр не должен назначится, т.е. будет например равен None или пустым

tests.py Outdated
# с помощью @pytest.mark.parametrize тест будет выполнен для каждого жанра из списка
def test_init_all_genre_exist(self, genre):
collector = BooksCollector() # создаем объект класса BooksCollector
genre_list=collector.get_book_genre() # вызываем метод, возвращающий список жанров
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

во-первых сейчас ошибка и не верно вызывается метод
TypeError: BooksCollector.get_book_genre() missing 1 required positional argument: 'name'

Во-вторых мы не должны тестировать атрибуты экземпляра класса - список жанров закодирован внутри приложения, его не нужно проверять, он может меняться.Нам нужно проверять методы приложения - добавление книг и что ожидаем после, назначение жанров книгам и т.п.

tests.py Outdated
@pytest.mark.parametrize('invalid_genre', ['Комиксы', ' ', '666', None])
def test_init_all_genre_is_invalid(self, invalid_genre):
collector = BooksCollector() # создаем объект класса BooksCollector
collector.set_book_genre('Книга', invalid_genre)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

нужно исправить: прежде чем назначить жанр нужно добавить книгу в приложение.

tests.py Outdated
@pytest.mark.parametrize('invalid_genre', ['Комиксы', ' ', '666', None])
def test_init_all_genre_is_invalid(self, collector, invalid_genre):
collector.set_book_genre('Книга', invalid_genre)
assert collector.get_books_genre('Книга') != invalid_genre
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

нет, предыдущая проверка не проверят этого. В случае попытки присвоить невалидный жанр, жанр не должен назначится, т.е. будет например равен None или пустым

tests.py Outdated

def test_get_books_with_specific_genre_get_book_by_genre(self):
collector = BooksCollector() # создаем объект класса BooksCollector
assert len(collector.get_books_with_specific_genre('Ужасы')) == 1
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

нужно исправить: в этом и следующем тесте - почему ожидаем что есть книги с этими жанрами? их не добавляли.

tests.py Outdated

def test_get_books_for_children_get_book_without_age_rating_possible(self):
collector = BooksCollector() # создаем объект класса BooksCollector
assert len(collector.get_books_for_children()) == 1
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

нужно исправить: тут нужно сначала добавить книги и назначить им детские жанры, потом добавить книги с недетскими жанрами и проверить что список верный

# 7.1 Проверка добавления книги в Избранное

def test_add_book_in_favorites_add_new_book_possible(self, collector):
collector.add_book_in_favorites('Новая книга ужасов')

This comment was marked as outdated.


def test_add_book_in_favorites_add_new_book_possible(self, collector):
collector.add_book_in_favorites('Новая книга ужасов')
assert len(collector.get_list_of_favorites_books()) == 1

This comment was marked as outdated.


def test_add_book_in_favorites_add_one_book_two_times_not_possible(self):
collector = BooksCollector() # создаем объект класса BooksCollector
collector.add_book_in_favorites('Новая книга ужасов')
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в этом тесте не хватает шагов

collector.add_new_book('Гордость и предубеждение и зомби')
collector.add_new_book('Что делать, если ваш кот хочет вас убить')
def test_delete_book_from_favorites_delete_book_possible(self):
collector = BooksCollector() # создаем объект класса BooksCollector

This comment was marked as outdated.

# напиши свои тесты ниже
# чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() No newline at end of file
def test_get_list_of_favorites_books_get_list_of_favorites_books_successful(self):
collector = BooksCollector() # создаем объект класса BooksCollector

This comment was marked as outdated.

tests.py Outdated
# 2 Проверка жанра книги
# 2.1 Проверка валидного жанра книги

@pytest.mark.parametrize('genre', ['Фантастика', 'Ужасы', 'Детективы', 'Мультфильмы', 'Комедии'])
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно исправить: В данном задании для параметризации лучше всего подходят граничные значения в классе длины имени - отдельно невалидные значения и отдельным тестом - ГЗ для валидных

# 1.1 Проверка добавления одной новой книги
def test_add_new_book_plus_one_book(self): # в имени функции test_ название тестируемого метода указание что тестируем
# self показывает, что этот метод является методом класса
collector = BooksCollector() # создаем объект класса BooksCollector
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

оптимально было бы сделать фикстуру для создания экземпляра класса и использовать во всех тестах

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments