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
Binary file added .coverage
Binary file not shown.
12 changes: 12 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.pytest_cache/
.DS_Store
target/allure-results/
target/allure-report/
__pycache__/
*.py[cod]
*$py.class
venv/
.venv/
env/
.idea/
.vscode/*
30 changes: 14 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
## Задание 1: Юнит-тесты

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

### Реализованные сценарии
## Реализованные сценарии

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

Процент покрытия 100% (отчет: `htmlcov/index.html`)
Процент покрытия 94% (отчет: `htmlcov/index.html`)

### Структура проекта
## Структура проекта:
* `praktikum` - пакет, содержащий код программы;
* `tests/` — тестовые модули;
* `conftest.py` — фикстуры;
* `.gitignore` — список игнорируемых файлов;
* `README.md` — описание проекта.

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

### Запуск автотестов

**Установка зависимостей**

> `$ pip install -r requirements.txt`

**Запуск автотестов и создание HTML-отчета о покрытии**

> `$ pytest --cov=praktikum --cov-report=html`
## Написаны тесты на функциональность:
* покрытие класса `Bun` модуль test_bun.py;
* покрытие класса `Ingredient` модуль test_ingredient.py;
* покрытие класса `Database` модуль test_database.py;
* покрытие класса `Burger` модуль test_burger.py.
20 changes: 20 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import pytest
from unittest.mock import Mock
from praktikum.bun import Bun
from praktikum.ingredient import Ingredient


@pytest.fixture
def bun_mock():
mock = Mock(Bun)
mock.get_name.return_value = "Флюоресцентная булка R2-D3"
mock.get_price.return_value = 988
return mock

@pytest.fixture
def ingredient_mock():
mock = Mock(Ingredient)
mock.get_name.return_value = "Хрустящие минеральные кольца"
mock.get_price.return_value = 300
mock.get_type.return_value = "FILLING"
return mock
File renamed without changes.
Empty file added praktikum/__init__.py
Empty file.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
27 changes: 27 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
allure-pytest==2.15.3
allure-python-commons==2.15.3
attrs==25.4.0
certifi==2026.2.25
charset-normalizer==3.4.7
coverage==7.13.4
Faker==40.11.0
h11==0.16.0
idna==3.11
iniconfig==2.3.0
outcome==1.3.0.post0
packaging==26.0
pluggy==1.6.0
Pygments==2.19.2
PySocks==1.7.1
pytest==9.0.2
pytest-cov==7.0.0
requests==2.33.1
selenium==4.41.0
sniffio==1.3.1
sortedcontainers==2.4.0
trio==0.33.0
trio-websocket==0.12.2
typing_extensions==4.15.0
urllib3==2.6.3
websocket-client==1.9.0
wsproto==1.3.2
Empty file added tests/__init__.py
Empty file.
11 changes: 11 additions & 0 deletions tests/test_bun.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from praktikum.bun import Bun

class TestBun:

def test_bun_get_name_returns_correct_name(self):
bun = Bun("Краторная булка Н-200и", 1255)
assert bun.get_name() == "Краторная булка Н-200и"

def test_bun_get_price_returns_correct_price(self):
bun = Bun("Краторная булка Н-200и", 1255)
assert bun.get_price() == 1255
10 changes: 10 additions & 0 deletions tests/test_burger.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from praktikum.burger import Burger

class TestBurger:

def test_get_price_burger(self, bun_mock, ingredient_mock):
burger = Burger()
burger.set_buns(bun_mock)
burger.add_ingredient(ingredient_mock)
expected_price = (bun_mock.get_price() * 2) + ingredient_mock.get_price()
assert burger.get_price() == expected_price
18 changes: 18 additions & 0 deletions tests/test_database.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from praktikum.database import Database
from praktikum.bun import Bun
from praktikum.ingredient import Ingredient
from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING

class TestDatabase:

def test_available_buns(self):
database = Database()
database.buns = [Bun("black bun", 100)]
list = database.available_buns()
assert list[0].get_name() == "black bun"

def test_available_ingredients(self):
database = Database()
database.ingredient = [Ingredient(INGREDIENT_TYPE_SAUCE, "hot sauce", 100)]
list = database.available_ingredients()
assert list[0].get_name() == "hot sauce"
15 changes: 15 additions & 0 deletions tests/test_ingredient.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from praktikum.ingredient import Ingredient

class TestIngredient:

def test_ingredient_get_name_returns_correct_name(self):
ingredient = Ingredient('SAUCE', 'Соус с шипами Антарианского плоскоходца', 88)
assert ingredient.get_name() == 'Соус с шипами Антарианского плоскоходца'

def test_ingredient_get_price_returns_correct_price(self):
ingredient = Ingredient('SAUCE', 'Соус с шипами Антарианского плоскоходца', 88)
assert ingredient.get_price() == 88

def test_ingredient_get_type_returns_correct_type(self):
ingredient = Ingredient('SAUCE', 'Соус с шипами Антарианского плоскоходца', 88)
assert ingredient.get_type() == 'SAUCE'