From c91d399af580687957a2b024cca17081c04300b1 Mon Sep 17 00:00:00 2001 From: Alina Smirnova Date: Thu, 12 Jun 2025 01:07:49 +0300 Subject: [PATCH 1/4] =?UTF-8?q?1-=D1=8F=20=D1=87=D0=B0=D1=81=D1=82=D1=8C?= =?UTF-8?q?=20=D0=B4=D0=B8=D0=BF=D0=BB=D0=BE=D0=BC=D0=B0=20'=D0=AE=D0=BD?= =?UTF-8?q?=D0=B8=D1=82-=D1=82=D0=B5=D1=81=D1=82=D1=8B'=20=D0=B3=D0=BE?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 164 ++++++++++++++++++ conftest.py | 17 ++ praktikum/__init__.py | 0 bun.py => praktikum/bun.py | 0 burger.py => praktikum/burger.py | 0 database.py => praktikum/database.py | 0 ingredient.py => praktikum/ingredient.py | 0 .../ingredient_types.py | 0 requirements.txt | 7 + tests/__init__.py | 0 tests/test_bun.py | 23 +++ tests/test_burger.py | 83 +++++++++ tests/test_database.py | 27 +++ tests/test_ingredient.py | 28 +++ 14 files changed, 349 insertions(+) create mode 100644 .gitignore create mode 100644 conftest.py create mode 100644 praktikum/__init__.py rename bun.py => praktikum/bun.py (100%) rename burger.py => praktikum/burger.py (100%) rename database.py => praktikum/database.py (100%) rename ingredient.py => praktikum/ingredient.py (100%) rename ingredient_types.py => praktikum/ingredient_types.py (100%) create mode 100644 requirements.txt create mode 100644 tests/__init__.py create mode 100644 tests/test_bun.py create mode 100644 tests/test_burger.py create mode 100644 tests/test_database.py create mode 100644 tests/test_ingredient.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..dda4f8f1d --- /dev/null +++ b/.gitignore @@ -0,0 +1,164 @@ +### Python template +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + diff --git a/conftest.py b/conftest.py new file mode 100644 index 000000000..2f60aaced --- /dev/null +++ b/conftest.py @@ -0,0 +1,17 @@ +import pytest +from praktikum.burger import Burger +from praktikum.database import Database + + +# фикстура создания экземпляра класса Burger +@pytest.fixture +def burger(): + return Burger() + +@pytest.fixture +def database(): + return Database() + +@pytest.fixture +def expected_ingredients(): + return [(ingredient.type, ingredient.name, ingredient.price) for ingredient in Database().available_ingredients()] diff --git a/praktikum/__init__.py b/praktikum/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/bun.py b/praktikum/bun.py similarity index 100% rename from bun.py rename to praktikum/bun.py diff --git a/burger.py b/praktikum/burger.py similarity index 100% rename from burger.py rename to praktikum/burger.py diff --git a/database.py b/praktikum/database.py similarity index 100% rename from database.py rename to praktikum/database.py diff --git a/ingredient.py b/praktikum/ingredient.py similarity index 100% rename from ingredient.py rename to praktikum/ingredient.py diff --git a/ingredient_types.py b/praktikum/ingredient_types.py similarity index 100% rename from ingredient_types.py rename to praktikum/ingredient_types.py diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..278033181 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +coverage==7.8.2 +iniconfig==2.1.0 +packaging==25.0 +pluggy==1.6.0 +Pygments==2.19.1 +pytest==8.4.0 +pytest-cov==6.1.1 diff --git a/tests/__init__.py b/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tests/test_bun.py b/tests/test_bun.py new file mode 100644 index 000000000..99fcda968 --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,23 @@ +from praktikum.bun import Bun + + +class TestBun: + + # проверяем метод __init__ + def test_name_of_bun_true(self): + bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) + assert bun.name == 'Флюорисцентная булка R2-D3' + + def test_price_of_bun_true(self): + bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) + assert bun.price == 3100.56 + + # проверяем геттер get_name + def test_get_name_returns_correct_name(self): + bun = Bun('Краторная булка N200-i', 4567.50) + assert bun.get_name() == 'Краторная булка N200-i' + + # проверяем геттер get_price + def test_get_price_returns_correct_price(self): + bun = Bun('Краторная булка N200-i', 4567.50) + assert bun.get_price() == 4567.50 diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..e4650d2c7 --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,83 @@ +from unittest.mock import Mock, patch +from praktikum.bun import Bun +from praktikum.ingredient import Ingredient +from conftest import burger + + +class TestBurger: + + # проверяем метод __init__ + def test_init_default_values(self, burger): + assert burger.bun is None + assert burger.ingredients == [] + + # проверяем метод set_buns с использованием мока + def test_set_buns_with_correct_bun(self, burger): + mock_bun = Mock(spec=Bun) + mock_bun.name = 'Мягкий лаваш' + mock_bun.price = 234.80 + burger.set_buns(mock_bun) + assert burger.bun == mock_bun + + # проверяем успешное добавление ингредиента с использованием мока + def test_add_ingredient_as_mock_success(self, burger): + mock_ingredient = Mock(spec=Ingredient) + burger.add_ingredient(mock_ingredient) + assert burger.ingredients[0] == mock_ingredient + + # проверка успешного удаления ингридиента с использованием мока + def test_remove_ingridient_as_mock_success(self, burger): + mock_ingredient_1 = Mock(spec=Ingredient) + mock_ingredient_2 = Mock(spec=Ingredient) + burger.add_ingredient(mock_ingredient_1) + burger.add_ingredient(mock_ingredient_2) + burger.remove_ingredient(0) + assert burger.ingredients[0] == mock_ingredient_2 + + # проверка успешного перемещения ингридента в списке ингридиентов на другое место + def test_move_ingredient_succes(self, burger): + mock_ingredient_1 = Mock(spec=Ingredient) + mock_ingredient_2 = Mock(spec=Ingredient) + mock_ingredient_3 = Mock(spec=Ingredient) + burger.add_ingredient(mock_ingredient_1) + burger.add_ingredient(mock_ingredient_2) + burger.add_ingredient(mock_ingredient_3) + burger.move_ingredient(2, 0) + assert burger.ingredients == [mock_ingredient_3, mock_ingredient_1, mock_ingredient_2] + + # + @patch('praktikum.bun.Bun') + def test_get_price_correct_result(self, mock_bun, burger): + mock_bun.return_value.get_price.return_value = 100.20 # замокировали метод get_price у класса Bun + mock_ingredients = [Mock(get_price=Mock(return_value=20.50)), # мок цены соуса + Mock(get_price=Mock(return_value=60.45))] # мок цены начинки + burger.set_buns(mock_bun()) + burger.ingredients = mock_ingredients + + assert burger.get_price() == 281.35 + + @patch('praktikum.burger.Burger.get_price') # замокировали метод get_price у бургера + def test_get_receipt(self, mock_get_price, burger): + mock_bun = Mock() + mock_bun.get_name.return_value = 'ржаная булка' + burger.bun = mock_bun + + mock_ingredient_1 = Mock() + mock_ingredient_1.get_name.return_value = 'говяжья котлета' + mock_ingredient_1.get_type.return_value = 'FILLING' + + mock_ingredient_2 = Mock() + mock_ingredient_2.get_name.return_value = 'кетчуп' + mock_ingredient_2.get_type.return_value = 'SAUCE' + + burger.ingredients = [mock_ingredient_1, mock_ingredient_2] + mock_get_price.return_value = 467 + + expected_receipt = '''(=== ржаная булка ===) + = filling говяжья котлета = + = sauce кетчуп = + (=== ржаная булка ===) + + Price: 467''' + + assert burger.get_receipt() == expected_receipt diff --git a/tests/test_database.py b/tests/test_database.py new file mode 100644 index 000000000..ddbb3ab0d --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,27 @@ +import pytest +from praktikum.database import Database +from conftest import database +from conftest import expected_ingredients + + +class TestDatabase: + + def test_available_buns_returns_list(self, database): + buns = database.available_buns() + assert isinstance(buns, list) + + def test_len_list_buns_is_three(self, database): + buns = database.available_buns() + assert len(buns) == 3 + + @pytest.mark.parametrize('index', [0, 1, 2]) + def test_available_buns_content(self, database, index): + bun = database.available_buns()[index] + expected_bun = Database().available_buns()[index] + assert (bun.name, bun.price) == (expected_bun.name, expected_bun.price) + + @pytest.mark.parametrize('index', list(range(6))) + def test_available_ingredients_content(self, database, expected_ingredients, index): + ingredient = database.available_ingredients()[index] + expected_content = expected_ingredients[index] + assert (ingredient.type, ingredient.name, ingredient.price) == expected_content \ No newline at end of file diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..7369e0452 --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,28 @@ +from praktikum.ingredient import Ingredient +from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE + + +class TestIngredient: + + def test_create_ingredient_is_successfil(self): + ingredient = Ingredient(INGREDIENT_TYPE_SAUCE, 'Сырный соус', 10.25) + assert ( + ingredient.type, + ingredient.name, + ingredient.price + ) == ( + INGREDIENT_TYPE_SAUCE, + 'Сырный соус', + 10.25) + + def test_get_price_return_correct_price(self): + ingredient = Ingredient(INGREDIENT_TYPE_SAUCE, 'Чили соус', 12.25) + assert ingredient.get_price() == 12.25 + + def test_get_name_return_correct_name(self): + ingredient = Ingredient(INGREDIENT_TYPE_SAUCE, 'Чили соус', 12.25) + assert ingredient.get_name() == 'Чили соус' + + def test_get_type_return_correct_type(self): + ingredient = Ingredient(INGREDIENT_TYPE_SAUCE, 'Чили соус', 12.25) + assert ingredient.get_type() == INGREDIENT_TYPE_SAUCE From b12d4b8c6b09f9d4819f094640de29dce8ba8ece Mon Sep 17 00:00:00 2001 From: Alina Smirnova Date: Sun, 22 Jun 2025 03:00:10 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=A1=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=D0=B0=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 +- README.md | 59 ++++++++++++++++++++----------- __init__.py | 0 tests/test_bun.py | 33 ++++++++++++------ tests/test_burger.py | 83 ++++++++++++++++++++++++++++++-------------- 5 files changed, 117 insertions(+), 60 deletions(-) delete mode 100644 __init__.py diff --git a/.gitignore b/.gitignore index dda4f8f1d..a38dbc03f 100644 --- a/.gitignore +++ b/.gitignore @@ -160,5 +160,5 @@ cython_debug/ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. -#.idea/ +.idea/ diff --git a/README.md b/README.md index 6f2477ead..3149adde3 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,41 @@ -## Дипломный проект. Задание 1: Юнит-тесты - -### Автотесты для проверки программы, которая помогает заказать бургер в Stellar Burgers - -### Реализованные сценарии - -Созданы юнит-тесты, покрывающие классы `Bun`, `Burger`, `Ingredient`, `Database` - -Процент покрытия 100% (отчет: `htmlcov/index.html`) - -### Структура проекта - -- `praktikum` - пакет, содержащий код программы -- `tests` - пакет, содержащий тесты, разделенные по классам. Например, `bun_test.py`, `burger_test.py` и т.д. - -### Запуск автотестов - -**Установка зависимостей** - +# 1-я часть дипломной работы: unit-тесты для сайта [StellarBurgers](https://stellarburgers.nomoreparties.site). + +Автотесты для проверки программы, которая помогает заказать бургер в Stellar Burgers. +Реализованные сценарии: +- созданы юнит-тесты, покрывающие классы `Bun`, `Burger`, `Ingredient`, `Database`; +- процент покрытия 100% (отчет: `htmlcov/index.html`) + +## Технологии +- Python 3.10+ +- [pytest](https://docs.pytest.org/) +- [pytest-cov](https://pypi.org/project/pytest-cov/) + +## Структура проекта +```text +Diplom_1/ + ├── praktikum # Пакет, содержащщий код программы + │ ├── bun.py + │ ├── burger.py + │ ├── database.py + │ ├── ingredient.py + │ ├── ingredient_types.py + │ ├── order_queue_page.py + │ + ├── tests/ # Тестовые сценарии + │ ├── test_bun.py + │ ├── test_burger.py + │ ├── test_database.py + │ ├── test_ingredient.py + │ + ├── conftest.py # Файл с фикстурами + ├── pytest.ini # Конфигурационный файл + └── requirements.txt # Файл с зависимостями для проекта +``` + +## Запуск автотестов + +1. **Установка зависимостей** > `$ pip install -r requirements.txt` -**Запуск автотестов и создание HTML-отчета о покрытии** - +2. **Запуск автотестов и создание HTML-отчета о покрытии** > `$ pytest --cov=praktikum --cov-report=html` diff --git a/__init__.py b/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/test_bun.py b/tests/test_bun.py index 99fcda968..c3e337cee 100644 --- a/tests/test_bun.py +++ b/tests/test_bun.py @@ -3,21 +3,32 @@ class TestBun: - # проверяем метод __init__ - def test_name_of_bun_true(self): + # проверяем метод __init__, возвращается корректное значение в поле name + def test_name_of_bun_return_correct(self): bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) - assert bun.name == 'Флюорисцентная булка R2-D3' + assert bun.name == 'Флюорисцентная булка R2-D3', f"Ожидается 'Флюорисцентная булка R2-D3', фактический результат - {bun.name}" - def test_price_of_bun_true(self): + # проверяем метод __init__, тип данных name это строка + def test_name_of_bun_is_string(self): bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) - assert bun.price == 3100.56 + assert isinstance(bun.name, str), f"Ожидается str, получен {type(bun.name)}" - # проверяем геттер get_name - def test_get_name_returns_correct_name(self): + # проверяем метод __init__, возвращается корректное значение в поле price + def test_price_of_bun_return_correct(self): + bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) + assert bun.price == 3100.56, f"Ожидается 3100.56, фактический результат - {bun.price}" + + # проверяем метод __init__, тип данных price это float + def test_price_of_bun_is_float(self): + bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) + assert isinstance(bun.price, float), f"Ожидается float, получен {type(bun.price)}" + + # проверяем метод get_name, корректно возвращает ожидаемое значение + def test_get_name_returns_correct_value(self): bun = Bun('Краторная булка N200-i', 4567.50) - assert bun.get_name() == 'Краторная булка N200-i' + assert bun.get_name() == 'Краторная булка N200-i', f"Ожидается 'Краторная булка N200-i', фактический результат {bun.get_name}" - # проверяем геттер get_price - def test_get_price_returns_correct_price(self): + # проверяем метод get_price, корректно возвращает ожидаемое значение + def test_get_price_returns_correct_value(self): bun = Bun('Краторная булка N200-i', 4567.50) - assert bun.get_price() == 4567.50 + assert bun.get_price() == 4567.50, f"Ожидается 4567.50, фактический результат - {bun.get_price}" \ No newline at end of file diff --git a/tests/test_burger.py b/tests/test_burger.py index e4650d2c7..e97d6720e 100644 --- a/tests/test_burger.py +++ b/tests/test_burger.py @@ -2,39 +2,71 @@ from praktikum.bun import Bun from praktikum.ingredient import Ingredient from conftest import burger +from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE class TestBurger: - # проверяем метод __init__ - def test_init_default_values(self, burger): - assert burger.bun is None - assert burger.ingredients == [] + # проверяем метод __init__, возвращается корректное дефолтное значение поля bun + def test_init_default_value_bun(self, burger): + assert burger.bun is None, f"Ожидается дефолтное значение None, фактический результат - {burger.bun}" + + # проверяем метод __init__, возвращается корректное дефолтное значение поля ingredients + def test_init_default_value_ingredients(self, burger): + assert burger.ingredients == [], f"Ожидается пустой список, фактический результат - {burger.ingredients}" + + # проверяем метод __init__, тип данных ingredients должен быть list + def test_ingredients_type_is_list(self, burger): + assert isinstance(burger.ingredients, list), f"Ожидается list, получен {type(burger.ingredients)}" # проверяем метод set_buns с использованием мока - def test_set_buns_with_correct_bun(self, burger): + def test_set_buns_return_correct_bun(self, burger): mock_bun = Mock(spec=Bun) mock_bun.name = 'Мягкий лаваш' mock_bun.price = 234.80 burger.set_buns(mock_bun) assert burger.bun == mock_bun + # проверяем метод set_buns, что bun действительно экземпляр класса Bun + def test_set_buns_belongs_class_bun(self, burger): + mock_bun = Mock(spec=Bun) + mock_bun.name = 'Мягкий лаваш' + mock_bun.price = 234.80 + burger.set_buns(mock_bun) + assert isinstance(burger.bun, Bun), f"Булочка не принадлежит классу Bun" + + # проверяем метод set_buns при передаче значения None + def test_set_buns_rejects_none(self, burger): + mock_bun = Mock(spec=Bun) + mock_bun.name = None + mock_bun.price = 234.80 + assert burger.bun != mock_bun, f"Название булочки не может быть None" + + # проверяем, что ingredient действительно экзмепляр класса Ingredient + def test_ingredient_belongs_class_ingredient(self, burger): + mock_ingredient = Mock(spec=Ingredient) + mock_ingredient.type = INGREDIENT_TYPE_SAUCE + mock_ingredient.name = 'кетчуп' + mock_ingredient.price = 35.30 + burger.add_ingredient(mock_ingredient) + assert isinstance(burger.ingredients[0], Ingredient), f"Ингредиент не принадлежит к классу Ingredient" + # проверяем успешное добавление ингредиента с использованием мока def test_add_ingredient_as_mock_success(self, burger): mock_ingredient = Mock(spec=Ingredient) burger.add_ingredient(mock_ingredient) - assert burger.ingredients[0] == mock_ingredient + assert burger.ingredients[0] == mock_ingredient, f"Ингредиент не был добавлен в бургер" - # проверка успешного удаления ингридиента с использованием мока - def test_remove_ingridient_as_mock_success(self, burger): + # проверяем успешное удаление ингрeдиента с использованием мока + def test_remove_ingredient_as_mock_success(self, burger): mock_ingredient_1 = Mock(spec=Ingredient) mock_ingredient_2 = Mock(spec=Ingredient) burger.add_ingredient(mock_ingredient_1) burger.add_ingredient(mock_ingredient_2) burger.remove_ingredient(0) - assert burger.ingredients[0] == mock_ingredient_2 + assert burger.ingredients[0] == mock_ingredient_2, f"Ингредиент {burger.ingredients[0]} не был удален из бургера" - # проверка успешного перемещения ингридента в списке ингридиентов на другое место + # проверка успешного перемещения ингредиента в списке ингредиентов на другое место def test_move_ingredient_succes(self, burger): mock_ingredient_1 = Mock(spec=Ingredient) mock_ingredient_2 = Mock(spec=Ingredient) @@ -43,41 +75,38 @@ def test_move_ingredient_succes(self, burger): burger.add_ingredient(mock_ingredient_2) burger.add_ingredient(mock_ingredient_3) burger.move_ingredient(2, 0) - assert burger.ingredients == [mock_ingredient_3, mock_ingredient_1, mock_ingredient_2] + assert burger.ingredients == [mock_ingredient_3, mock_ingredient_1, mock_ingredient_2], f"Ингредиент {burger.ingredients[2]} не был перемещен" - # + # проверяем, что метод get_price возвращает корректное значение @patch('praktikum.bun.Bun') def test_get_price_correct_result(self, mock_bun, burger): - mock_bun.return_value.get_price.return_value = 100.20 # замокировали метод get_price у класса Bun + mock_bun.return_value.get_price.return_value = 100.20 # замокировали метод get_price класса Bun mock_ingredients = [Mock(get_price=Mock(return_value=20.50)), # мок цены соуса Mock(get_price=Mock(return_value=60.45))] # мок цены начинки burger.set_buns(mock_bun()) burger.ingredients = mock_ingredients + assert burger.get_price() == 281.35, f"Ожидается 281.35, фактический результат - {burger.get_price}" - assert burger.get_price() == 281.35 - + # проверяем корректный вывод информации о бургере @patch('praktikum.burger.Burger.get_price') # замокировали метод get_price у бургера def test_get_receipt(self, mock_get_price, burger): mock_bun = Mock() mock_bun.get_name.return_value = 'ржаная булка' burger.bun = mock_bun - mock_ingredient_1 = Mock() mock_ingredient_1.get_name.return_value = 'говяжья котлета' mock_ingredient_1.get_type.return_value = 'FILLING' - mock_ingredient_2 = Mock() mock_ingredient_2.get_name.return_value = 'кетчуп' mock_ingredient_2.get_type.return_value = 'SAUCE' - burger.ingredients = [mock_ingredient_1, mock_ingredient_2] mock_get_price.return_value = 467 - - expected_receipt = '''(=== ржаная булка ===) - = filling говяжья котлета = - = sauce кетчуп = - (=== ржаная булка ===) - - Price: 467''' - - assert burger.get_receipt() == expected_receipt + expected_receipt = ( + "(==== ржаная булка ====)\n" + "= filling говяжья котлета =\n" + "= sauce кетчуп =\n" + "(==== ржаная булка ====)\n" + "\n" + "Price: 467") + + assert burger.get_receipt() == expected_receipt \ No newline at end of file From cc4b3de015e0ffb7edd07d45ca2eec3af84494b2 Mon Sep 17 00:00:00 2001 From: Alina Smirnova Date: Sat, 14 Mar 2026 15:50:23 +0300 Subject: [PATCH 3/4] Final: Unit tests with Allure and CI/CD --- .github/workflows/unit-tests.yml | 57 ++++++++ .gitignore | 3 +- README.md | 130 +++++++++++++++--- ...e0-1590-4d7a-a3f5-48f35570d364-result.json | 1 + ...7b-b017-44d9-a00e-822f03724a00-result.json | 1 + ...786f-4432-8761-eca3d9b88486-container.json | 1 + ...93-6f90-4040-bf51-f98bbd4c30a3-result.json | 1 + ...7eca-427c-97bc-14ea095cc617-container.json | 1 + ...5c-b225-43ca-a8dd-885536661b8d-result.json | 1 + ...48-b125-48f3-94ac-5b076ef349c0-result.json | 1 + ...4e-63a5-4b3a-897e-3eafd1bc30c7-result.json | 1 + ...400b-4937-b12a-6e6a55db7a05-container.json | 1 + ...95-dbc6-4327-9a54-efb8e30f5d45-result.json | 1 + ...2af7-4382-ad89-fa7d9e80f008-container.json | 1 + ...0e2c-4b6d-8a9b-ed6699a6004a-container.json | 1 + ...c1-77e9-465a-9921-bb1ae41ebbff-result.json | 1 + ...8fb5-4ef7-ada5-4f35f0d9d0b7-container.json | 1 + ...0275-40e7-bd28-e7387ba4d661-container.json | 1 + ...e2-a285-4c8a-b697-9a280b2caa3f-result.json | 1 + ...51ff-4359-aa56-dc4d1a1480c0-container.json | 1 + ...83bc-4a21-9147-1a03a8689779-container.json | 1 + ...cf-6576-45a6-8209-4d69d40de81b-result.json | 1 + ...7849-4fd3-b93c-07cc50ed62a6-container.json | 1 + ...8e6f-4ed8-b31a-c0ebda960b4f-container.json | 1 + ...1261-4d42-9bab-439a943bc497-container.json | 1 + ...d9-1f1a-47bc-af02-2869d52f998b-result.json | 1 + ...56c9-4c03-a040-8d7b21b4b77b-container.json | 1 + ...2d48-457c-b8b1-f3ffd60ae01c-container.json | 1 + ...e0-ce71-428a-b5aa-3578b4d51345-result.json | 1 + ...52d5-4de2-bb8a-0ff210414dc4-container.json | 1 + ...74-2528-42cf-a011-ae858f50c75d-result.json | 1 + ...ac11-4b97-b9d4-25fefa6b2ce0-container.json | 1 + ...c202-4954-94e2-a60936046d2e-container.json | 1 + ...5e66-454b-8f64-f7212d500164-container.json | 1 + ...12-c7c9-44a2-bdc4-5dcb2f94fec4-result.json | 1 + ...df-5353-471e-a7ee-14e5088cbb04-result.json | 1 + ...f7-f68b-471a-9636-2f164a291087-result.json | 1 + ...0b-9c43-4aef-8ae9-d97fcced3000-result.json | 1 + ...cb-c9ad-4de4-9d27-2b2f64c55185-result.json | 1 + ...65b5-4aac-b5d1-4d97306eab1b-container.json | 1 + ...58-9648-43ed-bfe7-75b3c6bd88a6-result.json | 1 + ...70-c765-43aa-b92f-7990bd09d12b-result.json | 1 + ...1f-97e6-4cb0-8d83-6b435f56f263-result.json | 1 + ...260e-4fdb-9ea6-fc15bae825d0-container.json | 1 + ...ccc5-4dd6-9118-79bce38d51e0-container.json | 1 + ...8de7-4f22-b224-fe54112d01d5-container.json | 1 + ...26-a2b9-4e87-9d2b-dd2719e50248-result.json | 1 + ...99c7-4f7f-a4af-3650d00138bb-container.json | 1 + ...f7c2-419f-9a77-afa382491dba-container.json | 1 + ...ac-9342-46c6-b31b-fa6d50048a53-result.json | 1 + ...58e0-4b63-8f03-09e9ed3f8c49-container.json | 1 + ...3f-b95d-4eee-b974-a73130be2b6c-result.json | 1 + ...809c-47a6-82a9-1977e59a963d-container.json | 1 + ...f750-4fe1-bb29-2515a746665d-container.json | 1 + ...75-dda0-44f6-a9ad-f29a5b241ed9-result.json | 1 + ...c3-c762-4b1d-acee-babdf7cde520-result.json | 1 + ...2d-0301-4ab6-8bbe-dcbbcc0274f6-result.json | 1 + ...21-86bb-4973-a36d-47b2ab472654-result.json | 1 + ...0498-4063-8555-55909566e611-container.json | 1 + ...e9-c55e-415f-a87e-ef55635d0518-result.json | 1 + ...a9-1672-41af-a7e0-dd105867883f-result.json | 1 + ...f2-92f0-4350-8928-9b35a56773c8-result.json | 1 + ...bb92-408c-bacc-92169962b569-container.json | 1 + ...ef2d-478d-aa07-4948fda1f1e8-container.json | 1 + ...0c2d-4cd4-bc85-15f26afafdab-container.json | 1 + ...b6d7-41be-a255-315dd0646c3a-container.json | 1 + ...b8fe-4c3e-ba5e-b3b9a0efea2a-container.json | 1 + ...cb25-4ce7-ab2b-5bcd4d7ef1d2-container.json | 1 + ...4b5f-4c5b-a759-7df1df0a160b-container.json | 1 + ...b227-45dd-b08e-1bc03c3b3ad6-container.json | 1 + ...89-c533-4f0b-9004-77c5c60714b7-result.json | 1 + ...eb4c-417a-8ec4-dda70ccf7e4b-container.json | 1 + ...81-408e-4c61-bb74-55918759ad47-result.json | 1 + ...789f-4835-9a3a-9c3bc32f496e-container.json | 1 + pytest.ini | 3 + requirements.txt | 2 +- tests/test_bun.py | 26 ++-- tests/test_burger.py | 53 +++---- tests/test_database.py | 14 +- tests/test_ingredient.py | 15 +- 80 files changed, 305 insertions(+), 69 deletions(-) create mode 100644 .github/workflows/unit-tests.yml create mode 100644 allure-results/016589e0-1590-4d7a-a3f5-48f35570d364-result.json create mode 100644 allure-results/0469cb7b-b017-44d9-a00e-822f03724a00-result.json create mode 100644 allure-results/04c47101-786f-4432-8761-eca3d9b88486-container.json create mode 100644 allure-results/053c2093-6f90-4040-bf51-f98bbd4c30a3-result.json create mode 100644 allure-results/09f97d2a-7eca-427c-97bc-14ea095cc617-container.json create mode 100644 allure-results/0afad75c-b225-43ca-a8dd-885536661b8d-result.json create mode 100644 allure-results/0c312448-b125-48f3-94ac-5b076ef349c0-result.json create mode 100644 allure-results/0f547d4e-63a5-4b3a-897e-3eafd1bc30c7-result.json create mode 100644 allure-results/1a781e36-400b-4937-b12a-6e6a55db7a05-container.json create mode 100644 allure-results/1ca5e295-dbc6-4327-9a54-efb8e30f5d45-result.json create mode 100644 allure-results/2063b56e-2af7-4382-ad89-fa7d9e80f008-container.json create mode 100644 allure-results/20fb2037-0e2c-4b6d-8a9b-ed6699a6004a-container.json create mode 100644 allure-results/271e8fc1-77e9-465a-9921-bb1ae41ebbff-result.json create mode 100644 allure-results/29296b51-8fb5-4ef7-ada5-4f35f0d9d0b7-container.json create mode 100644 allure-results/29939162-0275-40e7-bd28-e7387ba4d661-container.json create mode 100644 allure-results/2af7cee2-a285-4c8a-b697-9a280b2caa3f-result.json create mode 100644 allure-results/2d7335ad-51ff-4359-aa56-dc4d1a1480c0-container.json create mode 100644 allure-results/2e75d7a3-83bc-4a21-9147-1a03a8689779-container.json create mode 100644 allure-results/31aae7cf-6576-45a6-8209-4d69d40de81b-result.json create mode 100644 allure-results/33fbf2bd-7849-4fd3-b93c-07cc50ed62a6-container.json create mode 100644 allure-results/38e4f21b-8e6f-4ed8-b31a-c0ebda960b4f-container.json create mode 100644 allure-results/39ae7616-1261-4d42-9bab-439a943bc497-container.json create mode 100644 allure-results/3d1dccd9-1f1a-47bc-af02-2869d52f998b-result.json create mode 100644 allure-results/4745b3de-56c9-4c03-a040-8d7b21b4b77b-container.json create mode 100644 allure-results/4c06385b-2d48-457c-b8b1-f3ffd60ae01c-container.json create mode 100644 allure-results/4e531fe0-ce71-428a-b5aa-3578b4d51345-result.json create mode 100644 allure-results/4faa22d6-52d5-4de2-bb8a-0ff210414dc4-container.json create mode 100644 allure-results/500c8e74-2528-42cf-a011-ae858f50c75d-result.json create mode 100644 allure-results/5775b7a6-ac11-4b97-b9d4-25fefa6b2ce0-container.json create mode 100644 allure-results/5d6e1319-c202-4954-94e2-a60936046d2e-container.json create mode 100644 allure-results/63309ee3-5e66-454b-8f64-f7212d500164-container.json create mode 100644 allure-results/6b0ac312-c7c9-44a2-bdc4-5dcb2f94fec4-result.json create mode 100644 allure-results/6b3f17df-5353-471e-a7ee-14e5088cbb04-result.json create mode 100644 allure-results/6ca809f7-f68b-471a-9636-2f164a291087-result.json create mode 100644 allure-results/6e34ce0b-9c43-4aef-8ae9-d97fcced3000-result.json create mode 100644 allure-results/79dee7cb-c9ad-4de4-9d27-2b2f64c55185-result.json create mode 100644 allure-results/7e0b38b2-65b5-4aac-b5d1-4d97306eab1b-container.json create mode 100644 allure-results/80b30a58-9648-43ed-bfe7-75b3c6bd88a6-result.json create mode 100644 allure-results/83f5eb70-c765-43aa-b92f-7990bd09d12b-result.json create mode 100644 allure-results/848e251f-97e6-4cb0-8d83-6b435f56f263-result.json create mode 100644 allure-results/8ea61dba-260e-4fdb-9ea6-fc15bae825d0-container.json create mode 100644 allure-results/8f325e7f-ccc5-4dd6-9118-79bce38d51e0-container.json create mode 100644 allure-results/99c508d8-8de7-4f22-b224-fe54112d01d5-container.json create mode 100644 allure-results/9a16b826-a2b9-4e87-9d2b-dd2719e50248-result.json create mode 100644 allure-results/a6af4540-99c7-4f7f-a4af-3650d00138bb-container.json create mode 100644 allure-results/ac244405-f7c2-419f-9a77-afa382491dba-container.json create mode 100644 allure-results/b4817eac-9342-46c6-b31b-fa6d50048a53-result.json create mode 100644 allure-results/b4dd7b04-58e0-4b63-8f03-09e9ed3f8c49-container.json create mode 100644 allure-results/b6f38c3f-b95d-4eee-b974-a73130be2b6c-result.json create mode 100644 allure-results/bb0fe176-809c-47a6-82a9-1977e59a963d-container.json create mode 100644 allure-results/bbf6e6ea-f750-4fe1-bb29-2515a746665d-container.json create mode 100644 allure-results/bea6c275-dda0-44f6-a9ad-f29a5b241ed9-result.json create mode 100644 allure-results/c07023c3-c762-4b1d-acee-babdf7cde520-result.json create mode 100644 allure-results/c1bd192d-0301-4ab6-8bbe-dcbbcc0274f6-result.json create mode 100644 allure-results/c50b3e21-86bb-4973-a36d-47b2ab472654-result.json create mode 100644 allure-results/c631ffe6-0498-4063-8555-55909566e611-container.json create mode 100644 allure-results/c68d72e9-c55e-415f-a87e-ef55635d0518-result.json create mode 100644 allure-results/c6e4c0a9-1672-41af-a7e0-dd105867883f-result.json create mode 100644 allure-results/ca2203f2-92f0-4350-8928-9b35a56773c8-result.json create mode 100644 allure-results/cd60eca8-bb92-408c-bacc-92169962b569-container.json create mode 100644 allure-results/d44a275c-ef2d-478d-aa07-4948fda1f1e8-container.json create mode 100644 allure-results/d585d8c5-0c2d-4cd4-bc85-15f26afafdab-container.json create mode 100644 allure-results/dcc03efc-b6d7-41be-a255-315dd0646c3a-container.json create mode 100644 allure-results/e1d79ae1-b8fe-4c3e-ba5e-b3b9a0efea2a-container.json create mode 100644 allure-results/e1eae20f-cb25-4ce7-ab2b-5bcd4d7ef1d2-container.json create mode 100644 allure-results/ebee5ea6-4b5f-4c5b-a759-7df1df0a160b-container.json create mode 100644 allure-results/ef18abe8-b227-45dd-b08e-1bc03c3b3ad6-container.json create mode 100644 allure-results/f0600789-c533-4f0b-9004-77c5c60714b7-result.json create mode 100644 allure-results/f4c35c6b-eb4c-417a-8ec4-dda70ccf7e4b-container.json create mode 100644 allure-results/f9b37781-408e-4c61-bb74-55918759ad47-result.json create mode 100644 allure-results/fc123f15-789f-4835-9a3a-9c3bc32f496e-container.json create mode 100644 pytest.ini diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml new file mode 100644 index 000000000..ad7529770 --- /dev/null +++ b/.github/workflows/unit-tests.yml @@ -0,0 +1,57 @@ +name: Unit Tests + +on: + push: + branches: [ "main", "develop1" ] + pull_request: + branches: [ "main", "develop1" ] + +permissions: + contents: write + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + - name: Run Unit tests with Coverage + run: pytest --cov=praktikum --cov-report=term-missing + continue-on-error: true + + - name: Get Allure history + uses: actions/checkout@v4 + if: always() + continue-on-error: true + with: + ref: gh-pages + path: gh-pages + + - name: Allure Report Action + uses: simple-elf/allure-report-action@master + if: always() + with: + allure_results: allure-results + allure_history: allure-history + keep_reports: 20 + + - name: Deploy report to Github Pages + if: always() + uses: peaceiris/actions-gh-pages@v4 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: allure-history + publish_branch: gh-pages + force_orphan: true diff --git a/.gitignore b/.gitignore index a38dbc03f..f640d9526 100644 --- a/.gitignore +++ b/.gitignore @@ -161,4 +161,5 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. .idea/ - + allure-results/ + allure-report/ diff --git a/README.md b/README.md index 3149adde3..cc1f4c9f1 100644 --- a/README.md +++ b/README.md @@ -1,41 +1,131 @@ -# 1-я часть дипломной работы: unit-тесты для сайта [StellarBurgers](https://stellarburgers.nomoreparties.site). +# 🍔 Stellar Burgers: Unit Testing Framework (Part 1) -Автотесты для проверки программы, которая помогает заказать бургер в Stellar Burgers. -Реализованные сценарии: -- созданы юнит-тесты, покрывающие классы `Bun`, `Burger`, `Ingredient`, `Database`; -- процент покрытия 100% (отчет: `htmlcov/index.html`) +![CI/CD Status](https://github.com/AlyaSmirnova/Diplom_1/actions/workflows/unit-tests.yml/badge.svg?branch=main) +[![Python Version](https://img.shields.io/badge/python-3.11-blue)](https://www.python.org) +[![Coverage](https://img.shields.io/badge/Coverage-90%25-brightgreen)](https://github.com) +[![Tests](https://img.shields.io/badge/Tests-Pytest-blue?logo=pytest\&logoColor=white)](https://docs.pytest.org/) +[![Reports](https://img.shields.io/badge/Reports-Allure-orange?logo=allure)](https://github.com) -## Технологии -- Python 3.10+ -- [pytest](https://docs.pytest.org/) -- [pytest-cov](https://pypi.org/project/pytest-cov/) +## ✅ Table of Contents +1. [Description](#-description) +2. [Tech Stack & Tools](#-tech-stack-&-tools) +3. [Project Architecture](#-project-architecture) +4. [Allure Reporting Features](#-allure-reporting-features) +5. [Test Coverage](#-test-coverage) +6. [Execution Guide](#-execution-guide) +7. [CI/CD Workflow](#-cicd-workflow) -## Структура проекта +## 💫 Description +This is the first part of the graduation project: a comprehensive **Unit Testing** suite for the **Stellar Burgers** application. +The goal of this framework is to ensure the reliability of core business logic, including burger assembly, ingredient management, and price calculation, achieving **100% code coverage**. + +## Tech Stack & Tools +- **Language:** Python 3.13+ +- **Testing Framework:** [Pytest](https://docs.pytest.org/) +- **Isolation:** [Unittest.Mock](https://docs.python.org) (for mocking dependencies) +- **Coverage Tool:** [Pytest-cov](https://pypi.org/project/pytest-cov/) +- **Reporting:** Allure Framework +- **CI/CD:** GitHub Actions + +## Project Architecture ```text Diplom_1/ - ├── praktikum # Пакет, содержащщий код программы - │ ├── bun.py + ├── .github/workflows/ # CI/CD pipeline configuration + ├── allure-results/ # Raw test execution data (generated after run) + ├── praktikum # Source code (Business logic) │ ├── burger.py │ ├── database.py │ ├── ingredient.py │ ├── ingredient_types.py │ ├── order_queue_page.py │ - ├── tests/ # Тестовые сценарии + ├── tests/ # Unit test scenarios │ ├── test_bun.py │ ├── test_burger.py │ ├── test_database.py │ ├── test_ingredient.py │ - ├── conftest.py # Файл с фикстурами - ├── pytest.ini # Конфигурационный файл - └── requirements.txt # Файл с зависимостями для проекта + ├── conftest.py # Fixtures + ├── pytest.ini # Pytest & Allure configuration + ├── requirements.txt # Project dependencies + └── README.md # Comprehensive project documentation ``` -## Запуск автотестов +## 📊 Allure Reporting Features +The project is integrated with the **Allure Framework** to provide high-level visibility into the unit testing process. Key features include: + +* **Class-Based Grouping:** Tests are logically organized by **Features** corresponding to core classes (`Bun`, `Ingredient`, `Burger`, `Database`), making it easy to navigate the test suite. +* **Dynamic Documentation:** Uses `@allure.title` and `@allure.description` to transform technical test methods into clear, readable business requirements. +* **Execution Transparency:** Detailed logging for complex assembly logic in the `Burger` class, ensuring that every step of the burger construction is tracked. +* **Validation Details:** Comprehensive error messages and attribute verification are captured in the report, simplifying the debugging process. +* **Scalable Reporting:** Ready for integration with CI/CD tools to track test history and stability over time. + +## 🧪 Test Coverage +The suite provides **100% code coverage** for the core logic of the **Stellar Burgers** application, ensuring every method and boundary case is validated: + +### 1. Bun Class +* **Constructor Validation:** Ensuring the name and price are set correctly and have the proper data types (`str` and `float`). +* **Method Verification:** Testing `get_name()` and `get_price()` for accurate data retrieval. + +### 2. Ingredient Class +* **Initialization:** Verifying the correct assignment of ingredient types (Sauce/Filling), names, and prices. +* **Getters Testing:** Confirming that `get_name()`, `get_price()`, and `get_type()` return the expected values. + +### 3. Burger Class (Complex Logic & Mocking) +* **Assembly Operations:** + * Successful addition and removal of ingredients using **Mock objects** to isolate tests from the `Ingredient` class. + * Verification of the `move_ingredient()` method to ensure correct reordering within the list. +* **Pricing Engine:** Testing `get_price()` with **Mocking** and **Patching** to verify the calculation formula: `(Bun Price * 2) + Sum of Ingredients`. +* **Receipt Generation:** Validating the output format of the `get_receipt()` method, ensuring all components are displayed correctly in the final string. + +### 4. Database Class +* **Data Integrity:** Verification that the database returns the correct pre-defined list of 3 buns and 6 ingredients. +* **List Validation:** Checking that `available_buns()` and `available_ingredients()` return lists of the expected size and content. + +## 🚀 Execution Guide -1. **Установка зависимостей** +### 1. Environment Setup +Clone the repository and set up a local virtual environment to ensure dependency isolation: + +1. **Clone repository** +> ```bash +> git clone https://github.com/AlyaSmirnova/Diplom_1 +> cd Diplom_1 +📦 Repository: [Sprint_5](https://github.com/AlyaSmirnova/Diplom_1) + +2. **Create a virtual environment** +> ```bash +> python -m venv venv + +3. **Activate the virtual environment** +> ```bash +> source venv/bin/activate + +4. **Install required dependencies** > `$ pip install -r requirements.txt` -2. **Запуск автотестов и создание HTML-отчета о покрытии** -> `$ pytest --cov=praktikum --cov-report=html` +### 2. Running Tests +The framework is pre-configured via `pytest.ini`. You can execute the full test suite with a single command: +> ```bash +> pytest + +### 3. Code Coverage Analysis +To verify that the tests provide 100% code coverage, run the following command: +> ```bash +> pytest --cov=praktikum --cov-report=term-missing + +### 4. Generating Allure Report +To transform the test results into a visual, interactive HTML report: +> ```bash +> allure serve allure-results + +## ⚙️ CI/CD Workflow +The project is fully automated using **GitHub Actions**. Upon every `push` to the **main** branch or any `Pull Request` creation: + +1. **Environment Provisioning:** A clean **Ubuntu** runner is initialized in the cloud environment. +2. **Dependency Management:** The Python **3.13** environment is set up, and all required libraries (`Pytest`, `Pytest-cov`, `Allure`) are installed from `requirements.txt`. +3. **Automated Unit Testing:** Execution of the full test suite to ensure that all core business logic functions correctly. +4. **Coverage Analysis:** Automated check of **Code Coverage** (100% target) to ensure no untested logic reaches the repository. +5. **Allure Artifact Generation:** Test results and execution logs are collected to prepare a comprehensive **Allure report**. +6. **Status Badges:** Real-time feedback on build success and coverage percentage is provided via GitHub status badges. + diff --git a/allure-results/016589e0-1590-4d7a-a3f5-48f35570d364-result.json b/allure-results/016589e0-1590-4d7a-a3f5-48f35570d364-result.json new file mode 100644 index 000000000..7f227b7e0 --- /dev/null +++ b/allure-results/016589e0-1590-4d7a-a3f5-48f35570d364-result.json @@ -0,0 +1 @@ +{"name": "Successfully create an ingredient and verify attributes", "status": "passed", "start": 1773492481787, "stop": 1773492481787, "uuid": "d67a1175-de0e-49ce-a3f7-01329c19d61d", "historyId": "5b9a54ac28f62363619a289e19c604aa", "testCaseId": "5b9a54ac28f62363619a289e19c604aa", "fullName": "tests.test_ingredient.TestIngredient#test_create_ingredient_is_successfil", "labels": [{"name": "feature", "value": "Ingredient Logic"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_ingredient"}, {"name": "subSuite", "value": "TestIngredient"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_ingredient"}], "titlePath": ["tests", "test_ingredient.py", "TestIngredient"]} \ No newline at end of file diff --git a/allure-results/0469cb7b-b017-44d9-a00e-822f03724a00-result.json b/allure-results/0469cb7b-b017-44d9-a00e-822f03724a00-result.json new file mode 100644 index 000000000..6679594c9 --- /dev/null +++ b/allure-results/0469cb7b-b017-44d9-a00e-822f03724a00-result.json @@ -0,0 +1 @@ +{"name": "Remove ingredient successfully using Mock", "status": "passed", "start": 1773492481759, "stop": 1773492481759, "uuid": "58138ec2-9d34-446a-88b2-1b3d9cb86c3c", "historyId": "ee8f1f7603ffc3a6583ba1185f330531", "testCaseId": "ee8f1f7603ffc3a6583ba1185f330531", "fullName": "tests.test_burger.TestBurger#test_remove_ingredient_as_mock_success", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/04c47101-786f-4432-8761-eca3d9b88486-container.json b/allure-results/04c47101-786f-4432-8761-eca3d9b88486-container.json new file mode 100644 index 000000000..7f1d2620a --- /dev/null +++ b/allure-results/04c47101-786f-4432-8761-eca3d9b88486-container.json @@ -0,0 +1 @@ +{"uuid": "1d7c5007-cc66-4e6f-a3ea-c719ba1e85c2", "befores": [{"name": "index", "status": "passed", "start": 1773492481783, "stop": 1773492481783}], "start": 1773492481783, "stop": 1773492481783} \ No newline at end of file diff --git a/allure-results/053c2093-6f90-4040-bf51-f98bbd4c30a3-result.json b/allure-results/053c2093-6f90-4040-bf51-f98bbd4c30a3-result.json new file mode 100644 index 000000000..900865e04 --- /dev/null +++ b/allure-results/053c2093-6f90-4040-bf51-f98bbd4c30a3-result.json @@ -0,0 +1 @@ +{"name": "Check get_price() method returns correct value", "status": "passed", "start": 1773492481746, "stop": 1773492481746, "uuid": "2ad3419b-49f4-458b-b631-add0a1151479", "historyId": "33c15517578a45ce5714eace7a5b1a6c", "testCaseId": "33c15517578a45ce5714eace7a5b1a6c", "fullName": "tests.test_bun.TestBun#test_get_price_returns_correct_value", "labels": [{"name": "feature", "value": "Bun"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_bun"}, {"name": "subSuite", "value": "TestBun"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_bun"}], "titlePath": ["tests", "test_bun.py", "TestBun"]} \ No newline at end of file diff --git a/allure-results/09f97d2a-7eca-427c-97bc-14ea095cc617-container.json b/allure-results/09f97d2a-7eca-427c-97bc-14ea095cc617-container.json new file mode 100644 index 000000000..d9e813785 --- /dev/null +++ b/allure-results/09f97d2a-7eca-427c-97bc-14ea095cc617-container.json @@ -0,0 +1 @@ +{"uuid": "87276cd3-001a-461f-ab87-005407c9ebae", "children": ["1377addc-05a3-443a-ac13-cd0d940408dc"], "befores": [{"name": "expected_ingredients", "status": "passed", "start": 1773492481785, "stop": 1773492481785}], "start": 1773492481785, "stop": 1773492481786} \ No newline at end of file diff --git a/allure-results/0afad75c-b225-43ca-a8dd-885536661b8d-result.json b/allure-results/0afad75c-b225-43ca-a8dd-885536661b8d-result.json new file mode 100644 index 000000000..29b65c61c --- /dev/null +++ b/allure-results/0afad75c-b225-43ca-a8dd-885536661b8d-result.json @@ -0,0 +1 @@ +{"name": "Set bun using Mock object", "status": "passed", "start": 1773492481751, "stop": 1773492481752, "uuid": "739a7025-71da-46ae-9a87-c8a025f3520b", "historyId": "6dd204c147380aee1cfc63563f8edb8c", "testCaseId": "6dd204c147380aee1cfc63563f8edb8c", "fullName": "tests.test_burger.TestBurger#test_set_buns_return_correct_bun", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/0c312448-b125-48f3-94ac-5b076ef349c0-result.json b/allure-results/0c312448-b125-48f3-94ac-5b076ef349c0-result.json new file mode 100644 index 000000000..d0e70357b --- /dev/null +++ b/allure-results/0c312448-b125-48f3-94ac-5b076ef349c0-result.json @@ -0,0 +1 @@ +{"name": "Verify get_receipt() formatting", "status": "passed", "start": 1773492481767, "stop": 1773492481767, "uuid": "9ebc7b36-771d-4d65-abb9-d8cdc5e61073", "historyId": "5bf52d3a38b900560c9be02b6a5d981c", "testCaseId": "5bf52d3a38b900560c9be02b6a5d981c", "fullName": "tests.test_burger.TestBurger#test_get_receipt", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/0f547d4e-63a5-4b3a-897e-3eafd1bc30c7-result.json b/allure-results/0f547d4e-63a5-4b3a-897e-3eafd1bc30c7-result.json new file mode 100644 index 000000000..ba0f5331a --- /dev/null +++ b/allure-results/0f547d4e-63a5-4b3a-897e-3eafd1bc30c7-result.json @@ -0,0 +1 @@ +{"name": "Verify get_name() returns the correct value", "status": "passed", "start": 1773492481789, "stop": 1773492481789, "uuid": "be972ca3-8327-4813-9885-631520777a82", "historyId": "1bc7a4eb2b1d02efe05268fa0181c788", "testCaseId": "1bc7a4eb2b1d02efe05268fa0181c788", "fullName": "tests.test_ingredient.TestIngredient#test_get_name_return_correct_name", "labels": [{"name": "feature", "value": "Ingredient Logic"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_ingredient"}, {"name": "subSuite", "value": "TestIngredient"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_ingredient"}], "titlePath": ["tests", "test_ingredient.py", "TestIngredient"]} \ No newline at end of file diff --git a/allure-results/1a781e36-400b-4937-b12a-6e6a55db7a05-container.json b/allure-results/1a781e36-400b-4937-b12a-6e6a55db7a05-container.json new file mode 100644 index 000000000..495e2a4e2 --- /dev/null +++ b/allure-results/1a781e36-400b-4937-b12a-6e6a55db7a05-container.json @@ -0,0 +1 @@ +{"uuid": "6086fab3-a092-4661-a5e3-8b6c089daf2f", "befores": [{"name": "index", "status": "passed", "start": 1773492481771, "stop": 1773492481771}], "start": 1773492481771, "stop": 1773492481771} \ No newline at end of file diff --git a/allure-results/1ca5e295-dbc6-4327-9a54-efb8e30f5d45-result.json b/allure-results/1ca5e295-dbc6-4327-9a54-efb8e30f5d45-result.json new file mode 100644 index 000000000..9145d5d44 --- /dev/null +++ b/allure-results/1ca5e295-dbc6-4327-9a54-efb8e30f5d45-result.json @@ -0,0 +1 @@ +{"name": "Add ingredient successfully using Mock", "status": "passed", "start": 1773492481757, "stop": 1773492481757, "uuid": "8e396983-ae1d-43dd-9034-6933d31a85b9", "historyId": "470e54296e45b428ad46af4f711515b2", "testCaseId": "470e54296e45b428ad46af4f711515b2", "fullName": "tests.test_burger.TestBurger#test_add_ingredient_as_mock_success", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/2063b56e-2af7-4382-ad89-fa7d9e80f008-container.json b/allure-results/2063b56e-2af7-4382-ad89-fa7d9e80f008-container.json new file mode 100644 index 000000000..8cfe5b783 --- /dev/null +++ b/allure-results/2063b56e-2af7-4382-ad89-fa7d9e80f008-container.json @@ -0,0 +1 @@ +{"uuid": "515a5206-5587-48b0-a9bf-508e7b57ef96", "befores": [{"name": "index", "status": "passed", "start": 1773492481777, "stop": 1773492481777}], "start": 1773492481777, "stop": 1773492481777} \ No newline at end of file diff --git a/allure-results/20fb2037-0e2c-4b6d-8a9b-ed6699a6004a-container.json b/allure-results/20fb2037-0e2c-4b6d-8a9b-ed6699a6004a-container.json new file mode 100644 index 000000000..47e419fcf --- /dev/null +++ b/allure-results/20fb2037-0e2c-4b6d-8a9b-ed6699a6004a-container.json @@ -0,0 +1 @@ +{"uuid": "675bd966-888f-49d1-812e-430e0a418c09", "children": ["3c261c09-c68d-477b-bcf9-29b9111d3009"], "befores": [{"name": "expected_ingredients", "status": "passed", "start": 1773492481780, "stop": 1773492481780}], "start": 1773492481780, "stop": 1773492481780} \ No newline at end of file diff --git a/allure-results/271e8fc1-77e9-465a-9921-bb1ae41ebbff-result.json b/allure-results/271e8fc1-77e9-465a-9921-bb1ae41ebbff-result.json new file mode 100644 index 000000000..3ab0110d9 --- /dev/null +++ b/allure-results/271e8fc1-77e9-465a-9921-bb1ae41ebbff-result.json @@ -0,0 +1 @@ +{"name": "Check bun price is set correctly in constructor", "status": "passed", "start": 1773492481744, "stop": 1773492481744, "uuid": "822831af-f33e-4b72-a7a4-26be98ebc3e6", "historyId": "009582089a308f7345618bad1deab6ea", "testCaseId": "009582089a308f7345618bad1deab6ea", "fullName": "tests.test_bun.TestBun#test_price_of_bun_return_correct", "labels": [{"name": "feature", "value": "Bun"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_bun"}, {"name": "subSuite", "value": "TestBun"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_bun"}], "titlePath": ["tests", "test_bun.py", "TestBun"]} \ No newline at end of file diff --git a/allure-results/29296b51-8fb5-4ef7-ada5-4f35f0d9d0b7-container.json b/allure-results/29296b51-8fb5-4ef7-ada5-4f35f0d9d0b7-container.json new file mode 100644 index 000000000..04fec2d22 --- /dev/null +++ b/allure-results/29296b51-8fb5-4ef7-ada5-4f35f0d9d0b7-container.json @@ -0,0 +1 @@ +{"uuid": "acc7faed-0e93-4e34-beb4-44b5c973633b", "children": ["7c974132-7725-4f33-8c08-bb20b65b939c"], "befores": [{"name": "expected_ingredients", "status": "passed", "start": 1773492481777, "stop": 1773492481777}], "start": 1773492481777, "stop": 1773492481778} \ No newline at end of file diff --git a/allure-results/29939162-0275-40e7-bd28-e7387ba4d661-container.json b/allure-results/29939162-0275-40e7-bd28-e7387ba4d661-container.json new file mode 100644 index 000000000..8ca002262 --- /dev/null +++ b/allure-results/29939162-0275-40e7-bd28-e7387ba4d661-container.json @@ -0,0 +1 @@ +{"uuid": "b107fa4f-00b0-4ea5-80d5-a02fa6915521", "children": ["672bcfd7-d19b-4363-b254-12ecbe3cea36"], "befores": [{"name": "database", "status": "passed", "start": 1773492481783, "stop": 1773492481783}], "start": 1773492481783, "stop": 1773492481784} \ No newline at end of file diff --git a/allure-results/2af7cee2-a285-4c8a-b697-9a280b2caa3f-result.json b/allure-results/2af7cee2-a285-4c8a-b697-9a280b2caa3f-result.json new file mode 100644 index 000000000..94da98691 --- /dev/null +++ b/allure-results/2af7cee2-a285-4c8a-b697-9a280b2caa3f-result.json @@ -0,0 +1 @@ +{"name": "Check default bun value is None", "status": "passed", "start": 1773492481748, "stop": 1773492481748, "uuid": "e855ad1a-b6c6-4f34-9fa8-0c68b0a51d1b", "historyId": "0f1913d5a4a7836b6d490d038a49de45", "testCaseId": "0f1913d5a4a7836b6d490d038a49de45", "fullName": "tests.test_burger.TestBurger#test_init_default_value_bun", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/2d7335ad-51ff-4359-aa56-dc4d1a1480c0-container.json b/allure-results/2d7335ad-51ff-4359-aa56-dc4d1a1480c0-container.json new file mode 100644 index 000000000..e37603378 --- /dev/null +++ b/allure-results/2d7335ad-51ff-4359-aa56-dc4d1a1480c0-container.json @@ -0,0 +1 @@ +{"uuid": "c36ec11e-6c04-4ea7-b2c9-9daf5a575611", "children": ["58138ec2-9d34-446a-88b2-1b3d9cb86c3c"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481758, "stop": 1773492481758}], "start": 1773492481758, "stop": 1773492481759} \ No newline at end of file diff --git a/allure-results/2e75d7a3-83bc-4a21-9147-1a03a8689779-container.json b/allure-results/2e75d7a3-83bc-4a21-9147-1a03a8689779-container.json new file mode 100644 index 000000000..b542a35ea --- /dev/null +++ b/allure-results/2e75d7a3-83bc-4a21-9147-1a03a8689779-container.json @@ -0,0 +1 @@ +{"uuid": "776c7a4b-9099-440f-b249-cc7c5cf8ead0", "children": ["523e62f8-77da-44f9-8644-075ff287b198"], "befores": [{"name": "database", "status": "passed", "start": 1773492481770, "stop": 1773492481770}], "start": 1773492481770, "stop": 1773492481772} \ No newline at end of file diff --git a/allure-results/31aae7cf-6576-45a6-8209-4d69d40de81b-result.json b/allure-results/31aae7cf-6576-45a6-8209-4d69d40de81b-result.json new file mode 100644 index 000000000..fe679b445 --- /dev/null +++ b/allure-results/31aae7cf-6576-45a6-8209-4d69d40de81b-result.json @@ -0,0 +1 @@ +{"name": "Verify ingredient data at index: 3", "status": "passed", "parameters": [{"name": "index", "value": "3"}], "start": 1773492481782, "stop": 1773492481782, "uuid": "ab0d957e-dfef-4786-8a19-b282e92ca392", "historyId": "1e47938c18720dccd23ea401682fd6c3", "testCaseId": "ca14fa64941d80549ce7a8e66c954e4e", "fullName": "tests.test_database.TestDatabase#test_available_ingredients_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/33fbf2bd-7849-4fd3-b93c-07cc50ed62a6-container.json b/allure-results/33fbf2bd-7849-4fd3-b93c-07cc50ed62a6-container.json new file mode 100644 index 000000000..b605a895b --- /dev/null +++ b/allure-results/33fbf2bd-7849-4fd3-b93c-07cc50ed62a6-container.json @@ -0,0 +1 @@ +{"uuid": "c8935035-2d63-4924-9acd-501a7ff7d82e", "children": ["672bcfd7-d19b-4363-b254-12ecbe3cea36"], "befores": [{"name": "expected_ingredients", "status": "passed", "start": 1773492481783, "stop": 1773492481783}], "start": 1773492481783, "stop": 1773492481784} \ No newline at end of file diff --git a/allure-results/38e4f21b-8e6f-4ed8-b31a-c0ebda960b4f-container.json b/allure-results/38e4f21b-8e6f-4ed8-b31a-c0ebda960b4f-container.json new file mode 100644 index 000000000..f9292b37d --- /dev/null +++ b/allure-results/38e4f21b-8e6f-4ed8-b31a-c0ebda960b4f-container.json @@ -0,0 +1 @@ +{"uuid": "850cd2f9-d822-49a6-8ab7-581a901f392a", "children": ["dc75274f-576b-4d87-8011-221a5ee0b148"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481763, "stop": 1773492481763}], "start": 1773492481763, "stop": 1773492481765} \ No newline at end of file diff --git a/allure-results/39ae7616-1261-4d42-9bab-439a943bc497-container.json b/allure-results/39ae7616-1261-4d42-9bab-439a943bc497-container.json new file mode 100644 index 000000000..1ef3454cd --- /dev/null +++ b/allure-results/39ae7616-1261-4d42-9bab-439a943bc497-container.json @@ -0,0 +1 @@ +{"uuid": "84b5aa03-d151-4928-946e-b916fb429c15", "befores": [{"name": "index", "status": "passed", "start": 1773492481774, "stop": 1773492481774}], "start": 1773492481774, "stop": 1773492481774} \ No newline at end of file diff --git a/allure-results/3d1dccd9-1f1a-47bc-af02-2869d52f998b-result.json b/allure-results/3d1dccd9-1f1a-47bc-af02-2869d52f998b-result.json new file mode 100644 index 000000000..1b5e250f3 --- /dev/null +++ b/allure-results/3d1dccd9-1f1a-47bc-af02-2869d52f998b-result.json @@ -0,0 +1 @@ +{"name": "Verify bun data at index: 0", "status": "passed", "parameters": [{"name": "index", "value": "0"}], "start": 1773492481771, "stop": 1773492481771, "uuid": "523e62f8-77da-44f9-8644-075ff287b198", "historyId": "72e07b425d82ec4e1f3a656bd889fc4a", "testCaseId": "056b08df8c8ab1c0b50d14285bcc4fea", "fullName": "tests.test_database.TestDatabase#test_available_buns_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/4745b3de-56c9-4c03-a040-8d7b21b4b77b-container.json b/allure-results/4745b3de-56c9-4c03-a040-8d7b21b4b77b-container.json new file mode 100644 index 000000000..bc80659fb --- /dev/null +++ b/allure-results/4745b3de-56c9-4c03-a040-8d7b21b4b77b-container.json @@ -0,0 +1 @@ +{"uuid": "e61e57ad-bf93-4963-b528-7d3e0e5b662c", "children": ["18bc745a-cffb-422f-9f81-de9380b20842"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481750, "stop": 1773492481750}], "start": 1773492481750, "stop": 1773492481750} \ No newline at end of file diff --git a/allure-results/4c06385b-2d48-457c-b8b1-f3ffd60ae01c-container.json b/allure-results/4c06385b-2d48-457c-b8b1-f3ffd60ae01c-container.json new file mode 100644 index 000000000..fd1302f72 --- /dev/null +++ b/allure-results/4c06385b-2d48-457c-b8b1-f3ffd60ae01c-container.json @@ -0,0 +1 @@ +{"uuid": "4ce78a67-def9-468f-99cf-f8df8b688231", "befores": [{"name": "index", "status": "passed", "start": 1773492481775, "stop": 1773492481775}], "start": 1773492481775, "stop": 1773492481776} \ No newline at end of file diff --git a/allure-results/4e531fe0-ce71-428a-b5aa-3578b4d51345-result.json b/allure-results/4e531fe0-ce71-428a-b5aa-3578b4d51345-result.json new file mode 100644 index 000000000..f37dc2908 --- /dev/null +++ b/allure-results/4e531fe0-ce71-428a-b5aa-3578b4d51345-result.json @@ -0,0 +1 @@ +{"name": "Verify get_price() returns correct total value", "status": "passed", "start": 1773492481763, "stop": 1773492481765, "uuid": "dc75274f-576b-4d87-8011-221a5ee0b148", "historyId": "f79c28894e6a3bbf89a1b503e5caac66", "testCaseId": "f79c28894e6a3bbf89a1b503e5caac66", "fullName": "tests.test_burger.TestBurger#test_get_price_correct_result", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/4faa22d6-52d5-4de2-bb8a-0ff210414dc4-container.json b/allure-results/4faa22d6-52d5-4de2-bb8a-0ff210414dc4-container.json new file mode 100644 index 000000000..aa946aa62 --- /dev/null +++ b/allure-results/4faa22d6-52d5-4de2-bb8a-0ff210414dc4-container.json @@ -0,0 +1 @@ +{"uuid": "d280e973-4be9-4202-ac1b-2faa4b80194a", "children": ["739a7025-71da-46ae-9a87-c8a025f3520b"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481751, "stop": 1773492481751}], "start": 1773492481751, "stop": 1773492481752} \ No newline at end of file diff --git a/allure-results/500c8e74-2528-42cf-a011-ae858f50c75d-result.json b/allure-results/500c8e74-2528-42cf-a011-ae858f50c75d-result.json new file mode 100644 index 000000000..cdc62a803 --- /dev/null +++ b/allure-results/500c8e74-2528-42cf-a011-ae858f50c75d-result.json @@ -0,0 +1 @@ +{"name": "Verify bun data at index: 1", "status": "passed", "parameters": [{"name": "index", "value": "1"}], "start": 1773492481773, "stop": 1773492481773, "uuid": "9eb6ad7b-72fa-4e3c-8866-add45700ef24", "historyId": "dd572c4ff00b6962019d1f782a588d5e", "testCaseId": "056b08df8c8ab1c0b50d14285bcc4fea", "fullName": "tests.test_database.TestDatabase#test_available_buns_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/5775b7a6-ac11-4b97-b9d4-25fefa6b2ce0-container.json b/allure-results/5775b7a6-ac11-4b97-b9d4-25fefa6b2ce0-container.json new file mode 100644 index 000000000..299ab8f2e --- /dev/null +++ b/allure-results/5775b7a6-ac11-4b97-b9d4-25fefa6b2ce0-container.json @@ -0,0 +1 @@ +{"uuid": "c6c52654-eb57-44fb-aedb-17516a6ff9f8", "children": ["3e09bc5d-3197-4911-8c8f-440fa8bd06a3"], "befores": [{"name": "database", "status": "passed", "start": 1773492481769, "stop": 1773492481769}], "start": 1773492481769, "stop": 1773492481770} \ No newline at end of file diff --git a/allure-results/5d6e1319-c202-4954-94e2-a60936046d2e-container.json b/allure-results/5d6e1319-c202-4954-94e2-a60936046d2e-container.json new file mode 100644 index 000000000..e25285846 --- /dev/null +++ b/allure-results/5d6e1319-c202-4954-94e2-a60936046d2e-container.json @@ -0,0 +1 @@ +{"uuid": "52688c63-3e16-4c31-b2f8-97b935f7af17", "befores": [{"name": "index", "status": "passed", "start": 1773492481773, "stop": 1773492481773}], "start": 1773492481773, "stop": 1773492481773} \ No newline at end of file diff --git a/allure-results/63309ee3-5e66-454b-8f64-f7212d500164-container.json b/allure-results/63309ee3-5e66-454b-8f64-f7212d500164-container.json new file mode 100644 index 000000000..b4870d9b7 --- /dev/null +++ b/allure-results/63309ee3-5e66-454b-8f64-f7212d500164-container.json @@ -0,0 +1 @@ +{"uuid": "f8469854-c1c8-4673-b14c-d9b5f6130e76", "children": ["8e396983-ae1d-43dd-9034-6933d31a85b9"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481757, "stop": 1773492481757}], "start": 1773492481757, "stop": 1773492481757} \ No newline at end of file diff --git a/allure-results/6b0ac312-c7c9-44a2-bdc4-5dcb2f94fec4-result.json b/allure-results/6b0ac312-c7c9-44a2-bdc4-5dcb2f94fec4-result.json new file mode 100644 index 000000000..e0a9b9fdd --- /dev/null +++ b/allure-results/6b0ac312-c7c9-44a2-bdc4-5dcb2f94fec4-result.json @@ -0,0 +1 @@ +{"name": "Verify bun data at index: 2", "status": "passed", "parameters": [{"name": "index", "value": "2"}], "start": 1773492481774, "stop": 1773492481774, "uuid": "9eff7ed0-62ee-4659-b7b6-f219c4e995fe", "historyId": "246f0c04209f90a91a32de97fabb4edd", "testCaseId": "056b08df8c8ab1c0b50d14285bcc4fea", "fullName": "tests.test_database.TestDatabase#test_available_buns_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/6b3f17df-5353-471e-a7ee-14e5088cbb04-result.json b/allure-results/6b3f17df-5353-471e-a7ee-14e5088cbb04-result.json new file mode 100644 index 000000000..112ef4dba --- /dev/null +++ b/allure-results/6b3f17df-5353-471e-a7ee-14e5088cbb04-result.json @@ -0,0 +1 @@ +{"name": "Check that there are exactly 3 buns in the database", "status": "passed", "start": 1773492481769, "stop": 1773492481770, "uuid": "3e09bc5d-3197-4911-8c8f-440fa8bd06a3", "historyId": "b7b0878e82a9097e4bcfb42d88e70b15", "testCaseId": "b7b0878e82a9097e4bcfb42d88e70b15", "fullName": "tests.test_database.TestDatabase#test_len_list_buns_is_three", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/6ca809f7-f68b-471a-9636-2f164a291087-result.json b/allure-results/6ca809f7-f68b-471a-9636-2f164a291087-result.json new file mode 100644 index 000000000..3301f5252 --- /dev/null +++ b/allure-results/6ca809f7-f68b-471a-9636-2f164a291087-result.json @@ -0,0 +1 @@ +{"name": "Move ingredient successfully in the list", "status": "passed", "start": 1773492481761, "stop": 1773492481762, "uuid": "31d7c93f-207f-498c-bdcf-ad81d1db6238", "historyId": "00b591d91caee610631e63a467ba7871", "testCaseId": "00b591d91caee610631e63a467ba7871", "fullName": "tests.test_burger.TestBurger#test_move_ingredient_succes", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/6e34ce0b-9c43-4aef-8ae9-d97fcced3000-result.json b/allure-results/6e34ce0b-9c43-4aef-8ae9-d97fcced3000-result.json new file mode 100644 index 000000000..4df76665f --- /dev/null +++ b/allure-results/6e34ce0b-9c43-4aef-8ae9-d97fcced3000-result.json @@ -0,0 +1 @@ +{"name": "Verify get_type() returns the correct value", "status": "passed", "start": 1773492481789, "stop": 1773492481790, "uuid": "de733ffd-e890-4f60-b6ba-5a705f77cc17", "historyId": "bb620bba899620b20127746d3dd82c3c", "testCaseId": "bb620bba899620b20127746d3dd82c3c", "fullName": "tests.test_ingredient.TestIngredient#test_get_type_return_correct_type", "labels": [{"name": "feature", "value": "Ingredient Logic"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_ingredient"}, {"name": "subSuite", "value": "TestIngredient"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_ingredient"}], "titlePath": ["tests", "test_ingredient.py", "TestIngredient"]} \ No newline at end of file diff --git a/allure-results/79dee7cb-c9ad-4de4-9d27-2b2f64c55185-result.json b/allure-results/79dee7cb-c9ad-4de4-9d27-2b2f64c55185-result.json new file mode 100644 index 000000000..77a3ba8df --- /dev/null +++ b/allure-results/79dee7cb-c9ad-4de4-9d27-2b2f64c55185-result.json @@ -0,0 +1 @@ +{"name": "Check that available_buns() returns a list", "status": "passed", "start": 1773492481768, "stop": 1773492481768, "uuid": "ad607287-d24d-4cc1-af0e-63dd38154a90", "historyId": "954b3465dbaacee906e6d222eef5719e", "testCaseId": "954b3465dbaacee906e6d222eef5719e", "fullName": "tests.test_database.TestDatabase#test_available_buns_returns_list", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/7e0b38b2-65b5-4aac-b5d1-4d97306eab1b-container.json b/allure-results/7e0b38b2-65b5-4aac-b5d1-4d97306eab1b-container.json new file mode 100644 index 000000000..b8f4f48d3 --- /dev/null +++ b/allure-results/7e0b38b2-65b5-4aac-b5d1-4d97306eab1b-container.json @@ -0,0 +1 @@ +{"uuid": "8572f804-c466-4c50-806b-d8b685026c12", "children": ["1377addc-05a3-443a-ac13-cd0d940408dc"], "befores": [{"name": "database", "status": "passed", "start": 1773492481785, "stop": 1773492481785}], "start": 1773492481785, "stop": 1773492481786} \ No newline at end of file diff --git a/allure-results/80b30a58-9648-43ed-bfe7-75b3c6bd88a6-result.json b/allure-results/80b30a58-9648-43ed-bfe7-75b3c6bd88a6-result.json new file mode 100644 index 000000000..59ca91c95 --- /dev/null +++ b/allure-results/80b30a58-9648-43ed-bfe7-75b3c6bd88a6-result.json @@ -0,0 +1 @@ +{"name": "Verify ingredient data at index: 2", "status": "passed", "parameters": [{"name": "index", "value": "2"}], "start": 1773492481780, "stop": 1773492481780, "uuid": "3c261c09-c68d-477b-bcf9-29b9111d3009", "historyId": "25e07a4823b267b4512188dbd56f6edb", "testCaseId": "ca14fa64941d80549ce7a8e66c954e4e", "fullName": "tests.test_database.TestDatabase#test_available_ingredients_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/83f5eb70-c765-43aa-b92f-7990bd09d12b-result.json b/allure-results/83f5eb70-c765-43aa-b92f-7990bd09d12b-result.json new file mode 100644 index 000000000..3096f74ec --- /dev/null +++ b/allure-results/83f5eb70-c765-43aa-b92f-7990bd09d12b-result.json @@ -0,0 +1 @@ +{"name": "Check get_name() method returns correct value", "status": "passed", "start": 1773492481745, "stop": 1773492481746, "uuid": "53058849-272b-4d63-8c1e-3ea629ab89e7", "historyId": "52eda4c07c3793915218418a55fab026", "testCaseId": "52eda4c07c3793915218418a55fab026", "fullName": "tests.test_bun.TestBun#test_get_name_returns_correct_value", "labels": [{"name": "feature", "value": "Bun"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_bun"}, {"name": "subSuite", "value": "TestBun"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_bun"}], "titlePath": ["tests", "test_bun.py", "TestBun"]} \ No newline at end of file diff --git a/allure-results/848e251f-97e6-4cb0-8d83-6b435f56f263-result.json b/allure-results/848e251f-97e6-4cb0-8d83-6b435f56f263-result.json new file mode 100644 index 000000000..1cda27382 --- /dev/null +++ b/allure-results/848e251f-97e6-4cb0-8d83-6b435f56f263-result.json @@ -0,0 +1 @@ +{"name": "Check ingredients type is list", "status": "passed", "start": 1773492481750, "stop": 1773492481750, "uuid": "18bc745a-cffb-422f-9f81-de9380b20842", "historyId": "0f9e1c22cd17950ba67fb48149301963", "testCaseId": "0f9e1c22cd17950ba67fb48149301963", "fullName": "tests.test_burger.TestBurger#test_ingredients_type_is_list", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/8ea61dba-260e-4fdb-9ea6-fc15bae825d0-container.json b/allure-results/8ea61dba-260e-4fdb-9ea6-fc15bae825d0-container.json new file mode 100644 index 000000000..50935abd2 --- /dev/null +++ b/allure-results/8ea61dba-260e-4fdb-9ea6-fc15bae825d0-container.json @@ -0,0 +1 @@ +{"uuid": "a800a331-af4b-4f54-9231-fc1908a9cb0c", "children": ["ab0d957e-dfef-4786-8a19-b282e92ca392"], "befores": [{"name": "database", "status": "passed", "start": 1773492481781, "stop": 1773492481781}], "start": 1773492481781, "stop": 1773492481782} \ No newline at end of file diff --git a/allure-results/8f325e7f-ccc5-4dd6-9118-79bce38d51e0-container.json b/allure-results/8f325e7f-ccc5-4dd6-9118-79bce38d51e0-container.json new file mode 100644 index 000000000..25446859e --- /dev/null +++ b/allure-results/8f325e7f-ccc5-4dd6-9118-79bce38d51e0-container.json @@ -0,0 +1 @@ +{"uuid": "e709a0b8-1f65-4dbe-8b90-64436d894b11", "children": ["72081ca0-db86-4a23-aa57-06e82acd9b30"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481755, "stop": 1773492481755}], "start": 1773492481755, "stop": 1773492481756} \ No newline at end of file diff --git a/allure-results/99c508d8-8de7-4f22-b224-fe54112d01d5-container.json b/allure-results/99c508d8-8de7-4f22-b224-fe54112d01d5-container.json new file mode 100644 index 000000000..a6ae27499 --- /dev/null +++ b/allure-results/99c508d8-8de7-4f22-b224-fe54112d01d5-container.json @@ -0,0 +1 @@ +{"uuid": "18562b29-4cee-41cb-9470-91ee3118ecb9", "children": ["9a293896-e661-442a-8d3f-ef348439f3da"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481749, "stop": 1773492481749}], "start": 1773492481749, "stop": 1773492481749} \ No newline at end of file diff --git a/allure-results/9a16b826-a2b9-4e87-9d2b-dd2719e50248-result.json b/allure-results/9a16b826-a2b9-4e87-9d2b-dd2719e50248-result.json new file mode 100644 index 000000000..f44a926dc --- /dev/null +++ b/allure-results/9a16b826-a2b9-4e87-9d2b-dd2719e50248-result.json @@ -0,0 +1 @@ +{"name": "Check bun price data type is float", "status": "passed", "start": 1773492481745, "stop": 1773492481745, "uuid": "c515c9d6-a069-4b4d-bd8d-e4d83af8d8db", "historyId": "dc2dc31fcb620915bf0348fe7e88a06e", "testCaseId": "dc2dc31fcb620915bf0348fe7e88a06e", "fullName": "tests.test_bun.TestBun#test_price_of_bun_is_float", "labels": [{"name": "feature", "value": "Bun"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_bun"}, {"name": "subSuite", "value": "TestBun"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_bun"}], "titlePath": ["tests", "test_bun.py", "TestBun"]} \ No newline at end of file diff --git a/allure-results/a6af4540-99c7-4f7f-a4af-3650d00138bb-container.json b/allure-results/a6af4540-99c7-4f7f-a4af-3650d00138bb-container.json new file mode 100644 index 000000000..553bdfcc5 --- /dev/null +++ b/allure-results/a6af4540-99c7-4f7f-a4af-3650d00138bb-container.json @@ -0,0 +1 @@ +{"uuid": "19fd4af6-2ba4-428a-8ea3-05527a89fb2d", "children": ["7c974132-7725-4f33-8c08-bb20b65b939c"], "befores": [{"name": "database", "status": "passed", "start": 1773492481777, "stop": 1773492481777}], "start": 1773492481777, "stop": 1773492481778} \ No newline at end of file diff --git a/allure-results/ac244405-f7c2-419f-9a77-afa382491dba-container.json b/allure-results/ac244405-f7c2-419f-9a77-afa382491dba-container.json new file mode 100644 index 000000000..2c55ca10d --- /dev/null +++ b/allure-results/ac244405-f7c2-419f-9a77-afa382491dba-container.json @@ -0,0 +1 @@ +{"uuid": "2b3c4c06-4993-413f-a9ef-633244e5abad", "children": ["6804261c-6360-4245-b345-474865674a34"], "befores": [{"name": "expected_ingredients", "status": "passed", "start": 1773492481775, "stop": 1773492481775}], "start": 1773492481775, "stop": 1773492481776} \ No newline at end of file diff --git a/allure-results/b4817eac-9342-46c6-b31b-fa6d50048a53-result.json b/allure-results/b4817eac-9342-46c6-b31b-fa6d50048a53-result.json new file mode 100644 index 000000000..25c2c1c58 --- /dev/null +++ b/allure-results/b4817eac-9342-46c6-b31b-fa6d50048a53-result.json @@ -0,0 +1 @@ +{"name": "Verify set bun belongs to Bun class", "status": "passed", "start": 1773492481753, "stop": 1773492481753, "uuid": "5fc61c18-a167-46b4-a710-b5e3a2736107", "historyId": "6578b91ea0826ad2d029750f742edafc", "testCaseId": "6578b91ea0826ad2d029750f742edafc", "fullName": "tests.test_burger.TestBurger#test_set_buns_belongs_class_bun", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/b4dd7b04-58e0-4b63-8f03-09e9ed3f8c49-container.json b/allure-results/b4dd7b04-58e0-4b63-8f03-09e9ed3f8c49-container.json new file mode 100644 index 000000000..c9ea27a28 --- /dev/null +++ b/allure-results/b4dd7b04-58e0-4b63-8f03-09e9ed3f8c49-container.json @@ -0,0 +1 @@ +{"uuid": "57a5b532-35ba-45f3-b35b-2adbc7611df7", "children": ["e855ad1a-b6c6-4f34-9fa8-0c68b0a51d1b"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481747, "stop": 1773492481747}], "start": 1773492481747, "stop": 1773492481748} \ No newline at end of file diff --git a/allure-results/b6f38c3f-b95d-4eee-b974-a73130be2b6c-result.json b/allure-results/b6f38c3f-b95d-4eee-b974-a73130be2b6c-result.json new file mode 100644 index 000000000..966ec5e34 --- /dev/null +++ b/allure-results/b6f38c3f-b95d-4eee-b974-a73130be2b6c-result.json @@ -0,0 +1 @@ +{"name": "Verify ingredient data at index: 5", "status": "passed", "parameters": [{"name": "index", "value": "5"}], "start": 1773492481785, "stop": 1773492481785, "uuid": "1377addc-05a3-443a-ac13-cd0d940408dc", "historyId": "c733f07a1374eecc83ed3b8096332eaa", "testCaseId": "ca14fa64941d80549ce7a8e66c954e4e", "fullName": "tests.test_database.TestDatabase#test_available_ingredients_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/bb0fe176-809c-47a6-82a9-1977e59a963d-container.json b/allure-results/bb0fe176-809c-47a6-82a9-1977e59a963d-container.json new file mode 100644 index 000000000..5efa97192 --- /dev/null +++ b/allure-results/bb0fe176-809c-47a6-82a9-1977e59a963d-container.json @@ -0,0 +1 @@ +{"uuid": "b13c3c7d-4136-40a9-8d1d-7410507d32e5", "befores": [{"name": "index", "status": "passed", "start": 1773492481781, "stop": 1773492481781}], "start": 1773492481781, "stop": 1773492481782} \ No newline at end of file diff --git a/allure-results/bbf6e6ea-f750-4fe1-bb29-2515a746665d-container.json b/allure-results/bbf6e6ea-f750-4fe1-bb29-2515a746665d-container.json new file mode 100644 index 000000000..c4b2f064f --- /dev/null +++ b/allure-results/bbf6e6ea-f750-4fe1-bb29-2515a746665d-container.json @@ -0,0 +1 @@ +{"uuid": "372f4508-cf34-4389-b76c-9fa7dc69f98a", "children": ["31d7c93f-207f-498c-bdcf-ad81d1db6238"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481760, "stop": 1773492481761}], "start": 1773492481760, "stop": 1773492481762} \ No newline at end of file diff --git a/allure-results/bea6c275-dda0-44f6-a9ad-f29a5b241ed9-result.json b/allure-results/bea6c275-dda0-44f6-a9ad-f29a5b241ed9-result.json new file mode 100644 index 000000000..a0c180985 --- /dev/null +++ b/allure-results/bea6c275-dda0-44f6-a9ad-f29a5b241ed9-result.json @@ -0,0 +1 @@ +{"name": "Check bun name is set correctly in constructor", "status": "passed", "start": 1773492481741, "stop": 1773492481741, "uuid": "50e80d9f-e1e2-4856-a3ad-8e69ca24b3bd", "historyId": "71440f79c3b29f350e66bcc500d37449", "testCaseId": "71440f79c3b29f350e66bcc500d37449", "fullName": "tests.test_bun.TestBun#test_name_of_bun_return_correct", "labels": [{"name": "feature", "value": "Bun"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_bun"}, {"name": "subSuite", "value": "TestBun"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_bun"}], "titlePath": ["tests", "test_bun.py", "TestBun"]} \ No newline at end of file diff --git a/allure-results/c07023c3-c762-4b1d-acee-babdf7cde520-result.json b/allure-results/c07023c3-c762-4b1d-acee-babdf7cde520-result.json new file mode 100644 index 000000000..e90c73a4b --- /dev/null +++ b/allure-results/c07023c3-c762-4b1d-acee-babdf7cde520-result.json @@ -0,0 +1 @@ +{"name": "Verify ingredient data at index: 4", "status": "passed", "parameters": [{"name": "index", "value": "4"}], "start": 1773492481783, "stop": 1773492481783, "uuid": "672bcfd7-d19b-4363-b254-12ecbe3cea36", "historyId": "747ce5b5b0d0ca021ed20bae8bfdfa3d", "testCaseId": "ca14fa64941d80549ce7a8e66c954e4e", "fullName": "tests.test_database.TestDatabase#test_available_ingredients_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/c1bd192d-0301-4ab6-8bbe-dcbbcc0274f6-result.json b/allure-results/c1bd192d-0301-4ab6-8bbe-dcbbcc0274f6-result.json new file mode 100644 index 000000000..806041770 --- /dev/null +++ b/allure-results/c1bd192d-0301-4ab6-8bbe-dcbbcc0274f6-result.json @@ -0,0 +1 @@ +{"name": "Check bun name data type is string", "status": "passed", "start": 1773492481743, "stop": 1773492481743, "uuid": "03ec0a5c-d90f-4c16-80b2-b2fb08195b77", "historyId": "74f6bdac8398f64b905eb5a8e78239d6", "testCaseId": "74f6bdac8398f64b905eb5a8e78239d6", "fullName": "tests.test_bun.TestBun#test_name_of_bun_is_string", "labels": [{"name": "feature", "value": "Bun"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_bun"}, {"name": "subSuite", "value": "TestBun"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_bun"}], "titlePath": ["tests", "test_bun.py", "TestBun"]} \ No newline at end of file diff --git a/allure-results/c50b3e21-86bb-4973-a36d-47b2ab472654-result.json b/allure-results/c50b3e21-86bb-4973-a36d-47b2ab472654-result.json new file mode 100644 index 000000000..f261120d1 --- /dev/null +++ b/allure-results/c50b3e21-86bb-4973-a36d-47b2ab472654-result.json @@ -0,0 +1 @@ +{"name": "Verify ingredient data at index: 0", "status": "passed", "parameters": [{"name": "index", "value": "0"}], "start": 1773492481776, "stop": 1773492481776, "uuid": "6804261c-6360-4245-b345-474865674a34", "historyId": "e585a5389a76c69b2c71b0798b8650f4", "testCaseId": "ca14fa64941d80549ce7a8e66c954e4e", "fullName": "tests.test_database.TestDatabase#test_available_ingredients_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/c631ffe6-0498-4063-8555-55909566e611-container.json b/allure-results/c631ffe6-0498-4063-8555-55909566e611-container.json new file mode 100644 index 000000000..8157a510d --- /dev/null +++ b/allure-results/c631ffe6-0498-4063-8555-55909566e611-container.json @@ -0,0 +1 @@ +{"uuid": "66ebf662-4c31-4269-b859-fd6c52ab1dff", "children": ["6804261c-6360-4245-b345-474865674a34"], "befores": [{"name": "database", "status": "passed", "start": 1773492481775, "stop": 1773492481775}], "start": 1773492481775, "stop": 1773492481776} \ No newline at end of file diff --git a/allure-results/c68d72e9-c55e-415f-a87e-ef55635d0518-result.json b/allure-results/c68d72e9-c55e-415f-a87e-ef55635d0518-result.json new file mode 100644 index 000000000..f925d7971 --- /dev/null +++ b/allure-results/c68d72e9-c55e-415f-a87e-ef55635d0518-result.json @@ -0,0 +1 @@ +{"name": "Check default ingredients is an empty list", "status": "passed", "start": 1773492481749, "stop": 1773492481749, "uuid": "9a293896-e661-442a-8d3f-ef348439f3da", "historyId": "4d3d80d16b8ac24588b033b5f00dddb5", "testCaseId": "4d3d80d16b8ac24588b033b5f00dddb5", "fullName": "tests.test_burger.TestBurger#test_init_default_value_ingredients", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/c6e4c0a9-1672-41af-a7e0-dd105867883f-result.json b/allure-results/c6e4c0a9-1672-41af-a7e0-dd105867883f-result.json new file mode 100644 index 000000000..690ffccb2 --- /dev/null +++ b/allure-results/c6e4c0a9-1672-41af-a7e0-dd105867883f-result.json @@ -0,0 +1 @@ +{"name": "Verify get_price() returns the correct value", "status": "passed", "start": 1773492481788, "stop": 1773492481788, "uuid": "9c556fcd-008c-4679-bce4-572d2eef3906", "historyId": "b08399416d6b4e92213a58276b9ea55b", "testCaseId": "b08399416d6b4e92213a58276b9ea55b", "fullName": "tests.test_ingredient.TestIngredient#test_get_price_return_correct_price", "labels": [{"name": "feature", "value": "Ingredient Logic"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_ingredient"}, {"name": "subSuite", "value": "TestIngredient"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_ingredient"}], "titlePath": ["tests", "test_ingredient.py", "TestIngredient"]} \ No newline at end of file diff --git a/allure-results/ca2203f2-92f0-4350-8928-9b35a56773c8-result.json b/allure-results/ca2203f2-92f0-4350-8928-9b35a56773c8-result.json new file mode 100644 index 000000000..a6016b5ca --- /dev/null +++ b/allure-results/ca2203f2-92f0-4350-8928-9b35a56773c8-result.json @@ -0,0 +1 @@ +{"name": "Verify ingredient belongs to Ingredient class", "status": "passed", "start": 1773492481755, "stop": 1773492481756, "uuid": "72081ca0-db86-4a23-aa57-06e82acd9b30", "historyId": "839998f58e4afc9b31090e2e5b79b3d4", "testCaseId": "839998f58e4afc9b31090e2e5b79b3d4", "fullName": "tests.test_burger.TestBurger#test_ingredient_belongs_class_ingredient", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/cd60eca8-bb92-408c-bacc-92169962b569-container.json b/allure-results/cd60eca8-bb92-408c-bacc-92169962b569-container.json new file mode 100644 index 000000000..323b01ac3 --- /dev/null +++ b/allure-results/cd60eca8-bb92-408c-bacc-92169962b569-container.json @@ -0,0 +1 @@ +{"uuid": "9b22bef1-7f35-4009-b8ad-38b4abb2baea", "children": ["9eff7ed0-62ee-4659-b7b6-f219c4e995fe"], "befores": [{"name": "database", "status": "passed", "start": 1773492481774, "stop": 1773492481774}], "start": 1773492481774, "stop": 1773492481774} \ No newline at end of file diff --git a/allure-results/d44a275c-ef2d-478d-aa07-4948fda1f1e8-container.json b/allure-results/d44a275c-ef2d-478d-aa07-4948fda1f1e8-container.json new file mode 100644 index 000000000..dce7501e1 --- /dev/null +++ b/allure-results/d44a275c-ef2d-478d-aa07-4948fda1f1e8-container.json @@ -0,0 +1 @@ +{"uuid": "3b8cc8ef-3ac5-4c0b-be53-5a09a4017ceb", "children": ["ad607287-d24d-4cc1-af0e-63dd38154a90"], "befores": [{"name": "database", "status": "passed", "start": 1773492481768, "stop": 1773492481768}], "start": 1773492481768, "stop": 1773492481768} \ No newline at end of file diff --git a/allure-results/d585d8c5-0c2d-4cd4-bc85-15f26afafdab-container.json b/allure-results/d585d8c5-0c2d-4cd4-bc85-15f26afafdab-container.json new file mode 100644 index 000000000..8112bc5a1 --- /dev/null +++ b/allure-results/d585d8c5-0c2d-4cd4-bc85-15f26afafdab-container.json @@ -0,0 +1 @@ +{"uuid": "1659c308-26b3-4e7c-ac79-5e800a4e0cb2", "children": ["5fc61c18-a167-46b4-a710-b5e3a2736107"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481752, "stop": 1773492481752}], "start": 1773492481752, "stop": 1773492481753} \ No newline at end of file diff --git a/allure-results/dcc03efc-b6d7-41be-a255-315dd0646c3a-container.json b/allure-results/dcc03efc-b6d7-41be-a255-315dd0646c3a-container.json new file mode 100644 index 000000000..4e89fe242 --- /dev/null +++ b/allure-results/dcc03efc-b6d7-41be-a255-315dd0646c3a-container.json @@ -0,0 +1 @@ +{"uuid": "36e216a5-e54b-4ed5-a266-718077bac7b3", "children": ["ab0d957e-dfef-4786-8a19-b282e92ca392"], "befores": [{"name": "expected_ingredients", "status": "passed", "start": 1773492481781, "stop": 1773492481781}], "start": 1773492481781, "stop": 1773492481782} \ No newline at end of file diff --git a/allure-results/e1d79ae1-b8fe-4c3e-ba5e-b3b9a0efea2a-container.json b/allure-results/e1d79ae1-b8fe-4c3e-ba5e-b3b9a0efea2a-container.json new file mode 100644 index 000000000..bf63dd96a --- /dev/null +++ b/allure-results/e1d79ae1-b8fe-4c3e-ba5e-b3b9a0efea2a-container.json @@ -0,0 +1 @@ +{"uuid": "4e8eebcb-d7e3-460a-b4e4-381b95b30792", "befores": [{"name": "index", "status": "passed", "start": 1773492481785, "stop": 1773492481785}], "start": 1773492481785, "stop": 1773492481785} \ No newline at end of file diff --git a/allure-results/e1eae20f-cb25-4ce7-ab2b-5bcd4d7ef1d2-container.json b/allure-results/e1eae20f-cb25-4ce7-ab2b-5bcd4d7ef1d2-container.json new file mode 100644 index 000000000..da192b5b3 --- /dev/null +++ b/allure-results/e1eae20f-cb25-4ce7-ab2b-5bcd4d7ef1d2-container.json @@ -0,0 +1 @@ +{"uuid": "5cc584f0-a48c-4215-9534-d82c9b095b11", "children": ["310510b8-5df1-441c-b792-793fa93d0e27"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481754, "stop": 1773492481754}], "start": 1773492481754, "stop": 1773492481754} \ No newline at end of file diff --git a/allure-results/ebee5ea6-4b5f-4c5b-a759-7df1df0a160b-container.json b/allure-results/ebee5ea6-4b5f-4c5b-a759-7df1df0a160b-container.json new file mode 100644 index 000000000..799d55ba9 --- /dev/null +++ b/allure-results/ebee5ea6-4b5f-4c5b-a759-7df1df0a160b-container.json @@ -0,0 +1 @@ +{"uuid": "aeb45359-1274-4b2a-a68f-d03562a0d9d1", "befores": [{"name": "index", "status": "passed", "start": 1773492481780, "stop": 1773492481780}], "start": 1773492481780, "stop": 1773492481780} \ No newline at end of file diff --git a/allure-results/ef18abe8-b227-45dd-b08e-1bc03c3b3ad6-container.json b/allure-results/ef18abe8-b227-45dd-b08e-1bc03c3b3ad6-container.json new file mode 100644 index 000000000..f8f55c098 --- /dev/null +++ b/allure-results/ef18abe8-b227-45dd-b08e-1bc03c3b3ad6-container.json @@ -0,0 +1 @@ +{"uuid": "4e62d7ed-db64-4778-ae96-974b4b3ab7c1", "children": ["9ebc7b36-771d-4d65-abb9-d8cdc5e61073"], "befores": [{"name": "burger", "status": "passed", "start": 1773492481766, "stop": 1773492481767}], "start": 1773492481766, "stop": 1773492481767} \ No newline at end of file diff --git a/allure-results/f0600789-c533-4f0b-9004-77c5c60714b7-result.json b/allure-results/f0600789-c533-4f0b-9004-77c5c60714b7-result.json new file mode 100644 index 000000000..4d7c16d32 --- /dev/null +++ b/allure-results/f0600789-c533-4f0b-9004-77c5c60714b7-result.json @@ -0,0 +1 @@ +{"name": "Verify bun name cannot be None", "status": "passed", "start": 1773492481754, "stop": 1773492481754, "uuid": "310510b8-5df1-441c-b792-793fa93d0e27", "historyId": "1f6846731bb3c70b8652c388a472af31", "testCaseId": "1f6846731bb3c70b8652c388a472af31", "fullName": "tests.test_burger.TestBurger#test_set_buns_rejects_none", "labels": [{"name": "feature", "value": "Burger Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_burger"}, {"name": "subSuite", "value": "TestBurger"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_burger"}], "titlePath": ["tests", "test_burger.py", "TestBurger"]} \ No newline at end of file diff --git a/allure-results/f4c35c6b-eb4c-417a-8ec4-dda70ccf7e4b-container.json b/allure-results/f4c35c6b-eb4c-417a-8ec4-dda70ccf7e4b-container.json new file mode 100644 index 000000000..07d21684e --- /dev/null +++ b/allure-results/f4c35c6b-eb4c-417a-8ec4-dda70ccf7e4b-container.json @@ -0,0 +1 @@ +{"uuid": "5abb77ca-9fcb-4812-9ef9-6b01a27f7ea5", "children": ["9eb6ad7b-72fa-4e3c-8866-add45700ef24"], "befores": [{"name": "database", "status": "passed", "start": 1773492481772, "stop": 1773492481772}], "start": 1773492481772, "stop": 1773492481773} \ No newline at end of file diff --git a/allure-results/f9b37781-408e-4c61-bb74-55918759ad47-result.json b/allure-results/f9b37781-408e-4c61-bb74-55918759ad47-result.json new file mode 100644 index 000000000..8d7ac7cc8 --- /dev/null +++ b/allure-results/f9b37781-408e-4c61-bb74-55918759ad47-result.json @@ -0,0 +1 @@ +{"name": "Verify ingredient data at index: 1", "status": "passed", "parameters": [{"name": "index", "value": "1"}], "start": 1773492481777, "stop": 1773492481777, "uuid": "7c974132-7725-4f33-8c08-bb20b65b939c", "historyId": "e090cb5b682cc954f14be0adbfdefab6", "testCaseId": "ca14fa64941d80549ce7a8e66c954e4e", "fullName": "tests.test_database.TestDatabase#test_available_ingredients_content", "labels": [{"name": "feature", "value": "Database Operations"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "test_database"}, {"name": "subSuite", "value": "TestDatabase"}, {"name": "host", "value": "MacBook-Pro-Alina.local"}, {"name": "thread", "value": "71332-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.test_database"}], "titlePath": ["tests", "test_database.py", "TestDatabase"]} \ No newline at end of file diff --git a/allure-results/fc123f15-789f-4835-9a3a-9c3bc32f496e-container.json b/allure-results/fc123f15-789f-4835-9a3a-9c3bc32f496e-container.json new file mode 100644 index 000000000..d0f8c850e --- /dev/null +++ b/allure-results/fc123f15-789f-4835-9a3a-9c3bc32f496e-container.json @@ -0,0 +1 @@ +{"uuid": "61210e99-4856-4942-a8ad-5e18f0ee4a9a", "children": ["3c261c09-c68d-477b-bcf9-29b9111d3009"], "befores": [{"name": "database", "status": "passed", "start": 1773492481780, "stop": 1773492481780}], "start": 1773492481780, "stop": 1773492481780} \ No newline at end of file diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 000000000..de1f73a31 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +addopts = --alluredir=allure-results --clean-alluredir +testpaths = tests \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 278033181..922527916 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -coverage==7.8.2 +pip install allure-pytestcoverage==7.8.2 iniconfig==2.1.0 packaging==25.0 pluggy==1.6.0 diff --git a/tests/test_bun.py b/tests/test_bun.py index c3e337cee..2f7dd7192 100644 --- a/tests/test_bun.py +++ b/tests/test_bun.py @@ -1,34 +1,36 @@ from praktikum.bun import Bun +import allure +@allure.feature('Bun') class TestBun: - # проверяем метод __init__, возвращается корректное значение в поле name + @allure.title('Check bun name is set correctly in constructor') def test_name_of_bun_return_correct(self): bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) - assert bun.name == 'Флюорисцентная булка R2-D3', f"Ожидается 'Флюорисцентная булка R2-D3', фактический результат - {bun.name}" + assert bun.name == 'Флюорисцентная булка R2-D3', f"Expected name 'Флюорисцентная булка R2-D3', but got '{bun.name}'" - # проверяем метод __init__, тип данных name это строка + @allure.title('Check bun name data type is string') def test_name_of_bun_is_string(self): bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) - assert isinstance(bun.name, str), f"Ожидается str, получен {type(bun.name)}" + assert isinstance(bun.name, str), f"Expected name to be str, but got {type(bun.name)}" - # проверяем метод __init__, возвращается корректное значение в поле price + @allure.title('Check bun price is set correctly in constructor') def test_price_of_bun_return_correct(self): bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) - assert bun.price == 3100.56, f"Ожидается 3100.56, фактический результат - {bun.price}" + assert bun.price == 3100.56, f"Expected price 3100.56, but got {bun.price}" - # проверяем метод __init__, тип данных price это float + @allure.title('Check bun price data type is float') def test_price_of_bun_is_float(self): bun = Bun(name='Флюорисцентная булка R2-D3', price=3100.56) - assert isinstance(bun.price, float), f"Ожидается float, получен {type(bun.price)}" + assert isinstance(bun.price, float), f"Expected price to be float, but got {type(bun.price)}" - # проверяем метод get_name, корректно возвращает ожидаемое значение + @allure.title('Check get_name() method returns correct value') def test_get_name_returns_correct_value(self): bun = Bun('Краторная булка N200-i', 4567.50) - assert bun.get_name() == 'Краторная булка N200-i', f"Ожидается 'Краторная булка N200-i', фактический результат {bun.get_name}" + assert bun.get_name() == 'Краторная булка N200-i', f"Expected name 'Краторная булка N200-i', btu got {bun.get_name}" - # проверяем метод get_price, корректно возвращает ожидаемое значение + @allure.title('Check get_price() method returns correct value') def test_get_price_returns_correct_value(self): bun = Bun('Краторная булка N200-i', 4567.50) - assert bun.get_price() == 4567.50, f"Ожидается 4567.50, фактический результат - {bun.get_price}" \ No newline at end of file + assert bun.get_price() == 4567.50, f"Expected price 4567.50, but got {bun.get_price}" diff --git a/tests/test_burger.py b/tests/test_burger.py index e97d6720e..0dc4eb284 100644 --- a/tests/test_burger.py +++ b/tests/test_burger.py @@ -3,70 +3,71 @@ from praktikum.ingredient import Ingredient from conftest import burger from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE +import allure - +@allure.feature('Burger Operations') class TestBurger: - # проверяем метод __init__, возвращается корректное дефолтное значение поля bun + @allure.title('Check default bun value is None') def test_init_default_value_bun(self, burger): - assert burger.bun is None, f"Ожидается дефолтное значение None, фактический результат - {burger.bun}" + assert burger.bun is None, f"Expected None, but got {burger.bun}" - # проверяем метод __init__, возвращается корректное дефолтное значение поля ingredients + @allure.title('Check default ingredients is an empty list') def test_init_default_value_ingredients(self, burger): - assert burger.ingredients == [], f"Ожидается пустой список, фактический результат - {burger.ingredients}" + assert burger.ingredients == [], f"Expected empty list, but got {burger.ingredients}" - # проверяем метод __init__, тип данных ingredients должен быть list + @allure.title('Check ingredients type is list') def test_ingredients_type_is_list(self, burger): - assert isinstance(burger.ingredients, list), f"Ожидается list, получен {type(burger.ingredients)}" + assert isinstance(burger.ingredients, list), f"Expected list type, but got {type(burger.ingredients)}" - # проверяем метод set_buns с использованием мока + @allure.title('Set bun using Mock object') def test_set_buns_return_correct_bun(self, burger): mock_bun = Mock(spec=Bun) mock_bun.name = 'Мягкий лаваш' mock_bun.price = 234.80 burger.set_buns(mock_bun) - assert burger.bun == mock_bun + assert burger.bun == mock_bun, "The bun was not set correctly" - # проверяем метод set_buns, что bun действительно экземпляр класса Bun + @allure.title('Verify set bun belongs to Bun class') def test_set_buns_belongs_class_bun(self, burger): mock_bun = Mock(spec=Bun) mock_bun.name = 'Мягкий лаваш' mock_bun.price = 234.80 burger.set_buns(mock_bun) - assert isinstance(burger.bun, Bun), f"Булочка не принадлежит классу Bun" + assert isinstance(burger.bun, Bun), "The object is not an instance of Bun class" - # проверяем метод set_buns при передаче значения None + @allure.title('Verify bun name cannot be None') def test_set_buns_rejects_none(self, burger): mock_bun = Mock(spec=Bun) mock_bun.name = None mock_bun.price = 234.80 - assert burger.bun != mock_bun, f"Название булочки не может быть None" + assert burger.bun != mock_bun, "Bun name cannot be None" - # проверяем, что ingredient действительно экзмепляр класса Ingredient + @allure.title('Verify ingredient belongs to Ingredient class') def test_ingredient_belongs_class_ingredient(self, burger): mock_ingredient = Mock(spec=Ingredient) mock_ingredient.type = INGREDIENT_TYPE_SAUCE mock_ingredient.name = 'кетчуп' mock_ingredient.price = 35.30 burger.add_ingredient(mock_ingredient) - assert isinstance(burger.ingredients[0], Ingredient), f"Ингредиент не принадлежит к классу Ingredient" + assert isinstance(burger.ingredients[0], Ingredient), f"Ingredient does not belong to the Ingredient class" - # проверяем успешное добавление ингредиента с использованием мока + @allure.title('Add ingredient successfully using Mock') def test_add_ingredient_as_mock_success(self, burger): mock_ingredient = Mock(spec=Ingredient) burger.add_ingredient(mock_ingredient) - assert burger.ingredients[0] == mock_ingredient, f"Ингредиент не был добавлен в бургер" + assert burger.ingredients[0] == mock_ingredient, "Ingredient was not added to the burger" - # проверяем успешное удаление ингрeдиента с использованием мока + @allure.title('Remove ingredient successfully using Mock') def test_remove_ingredient_as_mock_success(self, burger): mock_ingredient_1 = Mock(spec=Ingredient) mock_ingredient_2 = Mock(spec=Ingredient) burger.add_ingredient(mock_ingredient_1) burger.add_ingredient(mock_ingredient_2) burger.remove_ingredient(0) - assert burger.ingredients[0] == mock_ingredient_2, f"Ингредиент {burger.ingredients[0]} не был удален из бургера" + assert burger.ingredients[0] == mock_ingredient_2, f"Ingredient {burger.ingredients[0]} was not removed" - # проверка успешного перемещения ингредиента в списке ингредиентов на другое место + @allure.title('Move ingredient successfully in the list') def test_move_ingredient_succes(self, burger): mock_ingredient_1 = Mock(spec=Ingredient) mock_ingredient_2 = Mock(spec=Ingredient) @@ -75,9 +76,9 @@ def test_move_ingredient_succes(self, burger): burger.add_ingredient(mock_ingredient_2) burger.add_ingredient(mock_ingredient_3) burger.move_ingredient(2, 0) - assert burger.ingredients == [mock_ingredient_3, mock_ingredient_1, mock_ingredient_2], f"Ингредиент {burger.ingredients[2]} не был перемещен" + assert burger.ingredients == [mock_ingredient_3, mock_ingredient_1, mock_ingredient_2], f"Ingredient {burger.ingredients[2]} was not moved" - # проверяем, что метод get_price возвращает корректное значение + @allure.title('Verify get_price() returns correct total value') @patch('praktikum.bun.Bun') def test_get_price_correct_result(self, mock_bun, burger): mock_bun.return_value.get_price.return_value = 100.20 # замокировали метод get_price класса Bun @@ -85,10 +86,10 @@ def test_get_price_correct_result(self, mock_bun, burger): Mock(get_price=Mock(return_value=60.45))] # мок цены начинки burger.set_buns(mock_bun()) burger.ingredients = mock_ingredients - assert burger.get_price() == 281.35, f"Ожидается 281.35, фактический результат - {burger.get_price}" + assert burger.get_price() == 281.35, f"Expected 281.35, but got {burger.get_price()}" - # проверяем корректный вывод информации о бургере - @patch('praktikum.burger.Burger.get_price') # замокировали метод get_price у бургера + @allure.title('Verify get_receipt() formatting') + @patch('praktikum.burger.Burger.get_price') def test_get_receipt(self, mock_get_price, burger): mock_bun = Mock() mock_bun.get_name.return_value = 'ржаная булка' @@ -109,4 +110,4 @@ def test_get_receipt(self, mock_get_price, burger): "\n" "Price: 467") - assert burger.get_receipt() == expected_receipt \ No newline at end of file + assert burger.get_receipt() == expected_receipt diff --git a/tests/test_database.py b/tests/test_database.py index ddbb3ab0d..bb7ffb992 100644 --- a/tests/test_database.py +++ b/tests/test_database.py @@ -2,26 +2,32 @@ from praktikum.database import Database from conftest import database from conftest import expected_ingredients +import allure +@allure.feature('Database Operations') class TestDatabase: + @allure.title('Check that available_buns() returns a list') def test_available_buns_returns_list(self, database): buns = database.available_buns() - assert isinstance(buns, list) + assert isinstance(buns, list), f"Expected list, but got {type(buns)}" + @allure.title('Check that there are exactly 3 buns in the database') def test_len_list_buns_is_three(self, database): buns = database.available_buns() - assert len(buns) == 3 + assert len(buns) == 3, f"Expected 3 buns, but found {len(buns)}" + @allure.title('Verify bun data at index: {index}') @pytest.mark.parametrize('index', [0, 1, 2]) def test_available_buns_content(self, database, index): bun = database.available_buns()[index] expected_bun = Database().available_buns()[index] - assert (bun.name, bun.price) == (expected_bun.name, expected_bun.price) + assert (bun.name, bun.price) == (expected_bun.name, expected_bun.price), f"Bun at index {index} does not match expected data" + @allure.title('Verify ingredient data at index: {index}') @pytest.mark.parametrize('index', list(range(6))) def test_available_ingredients_content(self, database, expected_ingredients, index): ingredient = database.available_ingredients()[index] expected_content = expected_ingredients[index] - assert (ingredient.type, ingredient.name, ingredient.price) == expected_content \ No newline at end of file + assert (ingredient.type, ingredient.name, ingredient.price) == expected_content, f"Ingredient at index {index} does not match expected data" diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py index 7369e0452..be132c3d0 100644 --- a/tests/test_ingredient.py +++ b/tests/test_ingredient.py @@ -1,9 +1,11 @@ from praktikum.ingredient import Ingredient from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE +import allure - +@allure.feature('Ingredient Logic') class TestIngredient: + @allure.title('Successfully create an ingredient and verify attributes') def test_create_ingredient_is_successfil(self): ingredient = Ingredient(INGREDIENT_TYPE_SAUCE, 'Сырный соус', 10.25) assert ( @@ -13,16 +15,19 @@ def test_create_ingredient_is_successfil(self): ) == ( INGREDIENT_TYPE_SAUCE, 'Сырный соус', - 10.25) + 10.25), f"Expected {(INGREDIENT_TYPE_SAUCE, 'Сырный соус', 10.25)}, but got {(ingredient.type, ingredient.name, ingredient.price)}" + @allure.title('Verify get_price() returns the correct value') def test_get_price_return_correct_price(self): ingredient = Ingredient(INGREDIENT_TYPE_SAUCE, 'Чили соус', 12.25) - assert ingredient.get_price() == 12.25 + assert ingredient.get_price() == 12.25, f"Expected price 12.25, but got {ingredient.get_price()}" + @allure.title('Verify get_name() returns the correct value') def test_get_name_return_correct_name(self): ingredient = Ingredient(INGREDIENT_TYPE_SAUCE, 'Чили соус', 12.25) - assert ingredient.get_name() == 'Чили соус' + assert ingredient.get_name() == 'Чили соус', f"Expected name 'Чили соус', but got '{ingredient.get_name()}'" + @allure.title('Verify get_type() returns the correct value') def test_get_type_return_correct_type(self): ingredient = Ingredient(INGREDIENT_TYPE_SAUCE, 'Чили соус', 12.25) - assert ingredient.get_type() == INGREDIENT_TYPE_SAUCE + assert ingredient.get_type() == INGREDIENT_TYPE_SAUCE, f"Expected type {INGREDIENT_TYPE_SAUCE}, but got {ingredient.get_type()}" From 67362e466cc1fe8714b39adea451ac8ac0736121 Mon Sep 17 00:00:00 2001 From: Alina Smirnova Date: Sat, 14 Mar 2026 15:59:50 +0300 Subject: [PATCH 4/4] fix: update requirements.txt --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 922527916..69d9ba91b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ -pip install allure-pytestcoverage==7.8.2 +allure-pytest +coverage==7.8.2 iniconfig==2.1.0 packaging==25.0 pluggy==1.6.0