Conversation
irisqul
left a comment
There was a problem hiding this comment.
✅ Сильные стороны:
- Код запускается без ошибок
- Обеспечено необходимое тестовое покрытие
There was a problem hiding this comment.
Нужно исправить: в директории tests хранятся только тесты и conftest, все остальное должно быть в корне
|
|
||
|
|
||
| class TestBun: | ||
| @pytest.mark.parametrize("bun_data", BUNS_DATA) |
There was a problem hiding this comment.
Можно лучше: для параметризации используют данные которые отличаются друг от друга, например принадлежат к разным классам эквивалентости (либо тестируют границы одного класса) и имеют одинаковый ОР. Твой список - это по сути один и тот же класс, нам не нужно проверять его много раз на самом деле. Можно было бы попробовать вводить латиницу, нелатиницу, с цифрами, с спецсимволами. Хотя у нас нет четких требований о валидации, мы все таки можем их предположить.
| bun = Bun(bun_data["name"], bun_data["price"]) | ||
| assert bun.get_name() == bun_data["name"] | ||
|
|
||
| @pytest.mark.parametrize("bun_data", BUNS_DATA) |
There was a problem hiding this comment.
Можно лучше: надежнее тестировать параметр при остальных неизменных. Например тут тестируем цену, значит в параметризации должна меняться только цена, а имя быть всегда одинаковым. в других случаях - аналогично
tests/conftest.py
Outdated
| return ingredient | ||
|
|
||
|
|
||
| @pytest.fixture |
There was a problem hiding this comment.
Нужно исправить здесь и далее: нам не нужны фикстуры чтобы получить статичные данные, нужно перенести в константы и просто получать по имени, а не вызывать функции.
| assert empty_burger.bun is None | ||
|
|
||
| def test_burger_initialization_ingredients_empty(self, empty_burger): | ||
| assert len(empty_burger.ingredients) == 0 |
There was a problem hiding this comment.
- Можно лучше: мы тестируем не атрибуты экземпляров класса или наполнение базы данных, а методы приложения. Необходимо добавить шаги в которых будут использованы методы и проверить результат.
tests/burger_test.py
Outdated
| empty_burger.add_ingredient(mock_ingredient_sauce) | ||
| empty_burger.add_ingredient(mock_ingredient_filling) | ||
| empty_burger.move_ingredient(test_data["index"], test_data["new_index"]) | ||
| assert empty_burger.ingredients[0] == mock_ingredient_sauce if test_data["expected_order"][0] == 0 else mock_ingredient_filling |
There was a problem hiding this comment.
Нужно исправить: условий в тестах быть не может, тест всегда однозначен. Если это не вписывается в параметризацию, значит ее быть не должно и это просто несколько отдельных тестовых методов
Задание 1