Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 35 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,46 @@
## Задание 1: Юнит-тесты
## Задание 1: Юнит-тесты Stellar Burgers (100% покрытие)

### Автотесты для проверки программы, которая помогает заказать бургер в Stellar Burgers
### Описание

### Реализованные сценарии
Юнит-тесты для класса `Burger` — программы сборки бургера в Stellar Burgers
Тестируем логику изолированно: моки для `Bun` и `Ingredient`, параметризация для разных сценариев

Созданы юнит-тесты, покрывающие классы `Bun`, `Burger`, `Ingredient`, `Database`
### Что тестируем

Процент покрытия 100% (отчет: `htmlcov/index.html`)
`__init__` - пустой бургер: `bun is None`, нет ингредиентов
`set_buns` - булочка сохраняется в объект
`add_ingredient` - ингредиенты добавляются в конец списка
`remove_ingredient` - удаление по индексу
`move_ingredient` - перемещение слоя, проверка порядка
`get_price` - 2 × булочка + сумма ингредиентов
`get_receipt` - формат чека и итоговая цена

### Структура проекта

- `praktikum` - пакет, содержащий код программы
- `tests` - пакет, содержащий тесты, разделенные по классам. Например, `bun_test.py`, `burger_test.py` и т.д.

### Запуск автотестов
### Установка и запуск

**Установка зависимостей**
Как проверить покрытие 100%

> `$ pip install -r requirements.txt`
1. Установить зависимости (из корня проекта Diplom_1):

**Запуск автотестов и создание HTML-отчета о покрытии**
pip install -r requirements.txt

> `$ pytest --cov=praktikum --cov-report=html`
2. Запустить тесты с отчётом о покрытии:

pytest --cov=praktikum.burger --cov-report=term-missing --cov-report=html tests/burger_test.py


4. Открыть HTML-отчёт:
- после команды выше создаётся папка htmlcov/
- открыть файл htmlcov/index.html в браузере
- файл praktikum/burger.py должен быть полностью зелёным (100%)

5. Запуск с Allure:

pytest tests/burger_test.py --alluredir=allure_results


### Технологии

- pytest, pytest-cov, allure-pytest
- unittest.mock (Mock)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "1c58137c-b394-4466-a04b-0433e3397f34", "befores": [{"name": "expected_price", "status": "passed", "start": 1781613440321, "stop": 1781613440322}], "start": 1781613440321, "stop": 1781613440324}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "set_buns сохраняет переданную булочку", "status": "passed", "start": 1781613440172, "stop": 1781613440172, "uuid": "471415fb-c165-458f-8463-930c563089a3", "historyId": "430b19f5de7226def337fa9ba4c78a46", "testCaseId": "430b19f5de7226def337fa9ba4c78a46", "fullName": "tests.burger_test.TestBurgerSetBuns#test_set_buns", "labels": [{"name": "story", "value": "Назначение булочки"}, {"name": "feature", "value": "Burger"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerSetBuns"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "IndexError при удалении по невалидному индексу 5", "status": "passed", "parameters": [{"name": "invalid_index", "value": "5"}], "start": 1781613440247, "stop": 1781613440248, "uuid": "e6eab46f-c2d3-47f6-be9f-3c986d3d5408", "historyId": "00c3e1639f3defcaaa7bcfded9df4a80", "testCaseId": "d7ae6a1e982347feab866ad993f6fd74", "fullName": "tests.burger_test.TestBurgerRemoveIngredient#test_remove_ingredient_invalid_index_raises", "labels": [{"name": "story", "value": "Удаление ингредиентов"}, {"name": "feature", "value": "Burger"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerRemoveIngredient"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "Цена полного космического бургера (фикстуры mock_bun_full + mock_ingredients)", "status": "passed", "start": 1781613440288, "stop": 1781613440288, "uuid": "9ccf9b30-4897-432d-a273-eed2e818c20d", "historyId": "5ac1866d92ea8963a272c852b6d3e890", "testCaseId": "5ac1866d92ea8963a272c852b6d3e890", "fullName": "tests.burger_test.TestBurgerGetPrice#test_get_price_full_burger", "labels": [{"name": "feature", "value": "Burger"}, {"name": "story", "value": "Расчёт цены"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerGetPrice"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "1e5e4462-971b-4d3b-9364-8b98d20930c5", "children": ["b4a9c594-3e40-4d88-b148-671f8dcee56b"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440242, "stop": 1781613440242}], "start": 1781613440242, "stop": 1781613440245}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "a284b44f-d60f-41f7-93b2-e8727f206358", "children": ["3b8000fe-7f8e-4c7c-898a-db24bcbb5446"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440292, "stop": 1781613440292}], "start": 1781613440292, "stop": 1781613440296}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "068c93cb-a022-4456-9e3d-aa86edf69d06", "children": ["c9d48288-12b9-4cb7-b9fc-2980ae5ae58f"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440272, "stop": 1781613440272}], "start": 1781613440272, "stop": 1781613440276}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "b09daef7-1d35-477e-9398-92880615581d", "befores": [{"name": "expected_lines", "status": "passed", "start": 1781613440344, "stop": 1781613440344}], "start": 1781613440344, "stop": 1781613440346}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "IndexError при удалении по невалидному индексу 1", "status": "passed", "parameters": [{"name": "invalid_index", "value": "1"}], "start": 1781613440243, "stop": 1781613440244, "uuid": "b4a9c594-3e40-4d88-b148-671f8dcee56b", "historyId": "cc59d9d27b6151d211d0d4fc95ac626f", "testCaseId": "d7ae6a1e982347feab866ad993f6fd74", "fullName": "tests.burger_test.TestBurgerRemoveIngredient#test_remove_ingredient_invalid_index_raises", "labels": [{"name": "story", "value": "Удаление ингредиентов"}, {"name": "feature", "value": "Burger"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerRemoveIngredient"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "8304584e-f19c-4bae-88fd-4ccbc1dca8bb", "befores": [{"name": "index", "status": "passed", "start": 1781613440232, "stop": 1781613440232}], "start": 1781613440232, "stop": 1781613440234}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "045132dc-6928-416c-b5ec-b5ff1e910343", "befores": [{"name": "expected_price", "status": "passed", "start": 1781613440316, "stop": 1781613440316}], "start": 1781613440316, "stop": 1781613440318}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "Цена при bun_price=100, ингредиенты=[]", "status": "passed", "parameters": [{"name": "bun_price", "value": "100"}, {"name": "ingredient_prices", "value": "[]"}, {"name": "expected_price", "value": "200"}], "start": 1781613440292, "stop": 1781613440293, "uuid": "3b8000fe-7f8e-4c7c-898a-db24bcbb5446", "historyId": "e2df8566926afd922918918cd94e236c", "testCaseId": "578820a82e4df11560ebc2b0dbe6c33e", "fullName": "tests.burger_test.TestBurgerGetPrice#test_get_price", "labels": [{"name": "feature", "value": "Burger"}, {"name": "story", "value": "Расчёт цены"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerGetPrice"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "34c076a4-8321-46e1-9b63-1b794d94b7bb", "befores": [{"name": "bun_price", "status": "passed", "start": 1781613440304, "stop": 1781613440304}], "start": 1781613440304, "stop": 1781613440307}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "IndexError при удалении по невалидному индексу 10", "status": "passed", "parameters": [{"name": "invalid_index", "value": "10"}], "start": 1781613440252, "stop": 1781613440252, "uuid": "cf684966-2fae-4ad0-89cc-8772398f7a7c", "historyId": "6a7fe6a485c22df38536010ee6d9fe46", "testCaseId": "d7ae6a1e982347feab866ad993f6fd74", "fullName": "tests.burger_test.TestBurgerRemoveIngredient#test_remove_ingredient_invalid_index_raises", "labels": [{"name": "story", "value": "Удаление ингредиентов"}, {"name": "feature", "value": "Burger"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerRemoveIngredient"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "91724382-d286-4a0f-a3f6-b9438b50727f", "children": ["8926c3e4-bf20-497c-8907-2e299bc10c84"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440232, "stop": 1781613440232}], "start": 1781613440232, "stop": 1781613440235}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "7bc1a516-7d26-4322-8b37-5e440cdaea8c", "children": ["958dd2f1-e72c-4105-ae11-ab8558d8c71f"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440310, "stop": 1781613440310}], "start": 1781613440310, "stop": 1781613440313}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "188bb53d-d53d-4df0-9385-d08657db0d2f", "befores": [{"name": "ingredient_count", "status": "passed", "start": 1781613440208, "stop": 1781613440208}], "start": 1781613440208, "stop": 1781613440210}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "93482dbe-4cbf-4d12-95d0-038c6fe67325", "befores": [{"name": "bun_price", "status": "passed", "start": 1781613440344, "stop": 1781613440344}], "start": 1781613440344, "stop": 1781613440347}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "5c239754-6af6-43b4-8188-997db8407be5", "befores": [{"name": "bun_name", "status": "passed", "start": 1781613440338, "stop": 1781613440338}], "start": 1781613440338, "stop": 1781613440341}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "7e39bcff-c870-4ed3-8fc9-a3e4af9c6a92", "befores": [{"name": "index", "status": "passed", "start": 1781613440260, "stop": 1781613440260}], "start": 1781613440260, "stop": 1781613440263}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "87f9959e-8331-4331-8b40-afacf415c724", "befores": [{"name": "bun_name", "status": "passed", "start": 1781613440176, "stop": 1781613440176}], "start": 1781613440176, "stop": 1781613440178}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "b1c7e914-7157-45c3-ad91-8b1711f9f44b", "befores": [{"name": "invalid_index", "status": "passed", "start": 1781613440242, "stop": 1781613440242}], "start": 1781613440242, "stop": 1781613440244}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "Цена при bun_price=0, ингредиенты=[0, 0]", "status": "passed", "parameters": [{"name": "bun_price", "value": "0"}, {"name": "ingredient_prices", "value": "[0, 0]"}, {"name": "expected_price", "value": "0"}], "start": 1781613440316, "stop": 1781613440317, "uuid": "bdf19a23-9be2-438f-9138-cb4d5bf139db", "historyId": "5f25dc45e478e86f85948e8a307cb622", "testCaseId": "578820a82e4df11560ebc2b0dbe6c33e", "fullName": "tests.burger_test.TestBurgerGetPrice#test_get_price", "labels": [{"name": "feature", "value": "Burger"}, {"name": "story", "value": "Расчёт цены"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerGetPrice"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "Цена при bun_price=25.5, ингредиенты=[10.1, 20.2, 30.3]", "status": "passed", "parameters": [{"name": "bun_price", "value": "25.5"}, {"name": "ingredient_prices", "value": "[10.1, 20.2, 30.3]"}, {"name": "expected_price", "value": "111.6"}], "start": 1781613440322, "stop": 1781613440323, "uuid": "6ed981cf-7da9-4972-9ac0-1c7a1b75db21", "historyId": "f44d5f4a5711ba1010ba2c78d9041cb1", "testCaseId": "578820a82e4df11560ebc2b0dbe6c33e", "fullName": "tests.burger_test.TestBurgerGetPrice#test_get_price", "labels": [{"name": "feature", "value": "Burger"}, {"name": "story", "value": "Расчёт цены"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerGetPrice"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "fedd1154-aa86-4ed0-a4d8-8026aa8c55ca", "children": ["9ccf9b30-4897-432d-a273-eed2e818c20d"], "befores": [{"name": "mock_ingredients", "status": "passed", "start": 1781613440287, "stop": 1781613440287}], "start": 1781613440287, "stop": 1781613440289}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "a626ef96-bef7-4bbf-95ee-4669d04ace99", "befores": [{"name": "bun_price", "status": "passed", "start": 1781613440292, "stop": 1781613440292}], "start": 1781613440292, "stop": 1781613440296}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "eda10c9a-d35f-47bc-af53-3441a8269be5", "befores": [{"name": "bun_price", "status": "passed", "start": 1781613440176, "stop": 1781613440176}], "start": 1781613440176, "stop": 1781613440177}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "9890cbba-9c63-4993-8ea4-dde09c31f42c", "children": ["e8175172-a73c-4a56-a827-12cd8b96c149"], "befores": [{"name": "burger_with_ingredients", "status": "passed", "start": 1781613440256, "stop": 1781613440256}], "start": 1781613440256, "stop": 1781613440257}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "413c360e-4c87-4da3-b82f-4e181bd3afd9", "children": ["dbd440b7-47f8-4623-bcc1-05fff9f7f590"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440304, "stop": 1781613440304}], "start": 1781613440304, "stop": 1781613440308}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "6aebc0a2-4c99-447a-9b84-e9ed54e11f26", "befores": [{"name": "ingredient_prices", "status": "passed", "start": 1781613440321, "stop": 1781613440321}], "start": 1781613440321, "stop": 1781613440324}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "89faaea1-af52-4e8d-8e13-54d71af328f5", "befores": [{"name": "bun_name", "status": "passed", "start": 1781613440181, "stop": 1781613440181}], "start": 1781613440181, "stop": 1781613440182}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "10585dd1-80af-465b-96ff-3eccab0158b7", "befores": [{"name": "bun_name", "status": "passed", "start": 1781613440344, "stop": 1781613440344}], "start": 1781613440344, "stop": 1781613440348}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "1880fe90-e3f4-4418-97ed-e7c219622c29", "befores": [{"name": "new_index", "status": "passed", "start": 1781613440260, "stop": 1781613440260}], "start": 1781613440260, "stop": 1781613440263}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "Удаление ингредиента по индексу 1", "status": "passed", "parameters": [{"name": "index", "value": "1"}, {"name": "expected_indices", "value": "[0, 2]"}], "start": 1781613440232, "stop": 1781613440233, "uuid": "8926c3e4-bf20-497c-8907-2e299bc10c84", "historyId": "75926cbbf4050ea5bf3488aaa65f2e57", "testCaseId": "02dd2522783e9394b34063ab4a9d8bdb", "fullName": "tests.burger_test.TestBurgerRemoveIngredient#test_remove_ingredient", "labels": [{"name": "story", "value": "Удаление ингредиентов"}, {"name": "feature", "value": "Burger"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerRemoveIngredient"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "60409e9e-3d4f-43cc-8192-a53bdff382e2", "children": ["d10a9bc3-0273-4030-b871-eeb3fc3e197d"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440194, "stop": 1781613440194}], "start": 1781613440194, "stop": 1781613440197}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "a845b5aa-6553-4f2f-a2d8-9823dbb40afe", "children": ["671037c7-eda7-419f-86a5-b0e4fc4f69be"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440163, "stop": 1781613440163}], "start": 1781613440163, "stop": 1781613440166}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "668bcb6f-57a2-49d8-9922-163321c22795", "children": ["3e892444-54b2-40c5-ac86-20be9ce6b3c4"], "befores": [{"name": "burger", "status": "passed", "start": 1781613440260, "stop": 1781613440260}], "start": 1781613440260, "stop": 1781613440264}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"uuid": "93fa9f64-64d3-4587-beea-e7877e435224", "befores": [{"name": "ingredient_count", "status": "passed", "start": 1781613440203, "stop": 1781613440203}], "start": 1781613440203, "stop": 1781613440205}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"name": "Чек полного космического бургера (фикстуры mock_bun_full + mock_ingredients)", "status": "passed", "start": 1781613440329, "stop": 1781613440331, "uuid": "8133e9ff-6543-4230-be9a-6ee15b277d92", "historyId": "edb8cf233e33ecb17b866ece905f5d25", "testCaseId": "edb8cf233e33ecb17b866ece905f5d25", "fullName": "tests.burger_test.TestBurgerGetReceipt#test_get_receipt_full_burger", "labels": [{"name": "feature", "value": "Burger"}, {"name": "story", "value": "Формирование чека"}, {"name": "parentSuite", "value": "tests"}, {"name": "suite", "value": "burger_test"}, {"name": "subSuite", "value": "TestBurgerGetReceipt"}, {"name": "host", "value": "DESKTOP-FK5GALD"}, {"name": "thread", "value": "4868-MainThread"}, {"name": "framework", "value": "pytest"}, {"name": "language", "value": "cpython3"}, {"name": "package", "value": "tests.burger_test"}]}
Loading