From 3397e9257d1b7f2d3693c709c30bd89140e94905 Mon Sep 17 00:00:00 2001 From: Nickolai Valishin Date: Fri, 24 Apr 2026 23:49:04 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D1=8E=20=D0=BF=D0=BE=D0=B2=D1=82=D0=BE=D1=80=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + conftest.py | 61 +++++++++++++++ data.py | 49 ++++++++++++ __init__.py => praktikum/__init__.py | 0 .../__pycache__/__init__.cpython-314.pyc | Bin 0 -> 238 bytes praktikum/__pycache__/bun.cpython-314.pyc | Bin 0 -> 1653 bytes praktikum/__pycache__/burger.cpython-314.pyc | Bin 0 -> 4244 bytes .../__pycache__/database.cpython-314.pyc | Bin 0 -> 2891 bytes .../__pycache__/ingredient.cpython-314.pyc | Bin 0 -> 2102 bytes .../ingredient_types.cpython-314.pyc | Bin 0 -> 466 bytes 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 praktikum.py => praktikum/praktikum.py | 0 requirements.txt | Bin 0 -> 216 bytes tests/test_bun.py | 13 ++++ tests/test_burger.py | 73 ++++++++++++++++++ tests/test_database.py | 25 ++++++ tests/test_ingredient.py | 28 +++++++ 21 files changed, 251 insertions(+) create mode 100644 .gitignore create mode 100644 conftest.py create mode 100644 data.py rename __init__.py => praktikum/__init__.py (100%) create mode 100644 praktikum/__pycache__/__init__.cpython-314.pyc create mode 100644 praktikum/__pycache__/bun.cpython-314.pyc create mode 100644 praktikum/__pycache__/burger.cpython-314.pyc create mode 100644 praktikum/__pycache__/database.cpython-314.pyc create mode 100644 praktikum/__pycache__/ingredient.cpython-314.pyc create mode 100644 praktikum/__pycache__/ingredient_types.cpython-314.pyc 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%) rename praktikum.py => praktikum/praktikum.py (100%) create mode 100644 requirements.txt 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..89c255499 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.venv +.pytest_cache diff --git a/conftest.py b/conftest.py new file mode 100644 index 000000000..088a02278 --- /dev/null +++ b/conftest.py @@ -0,0 +1,61 @@ +from praktikum.database import Database +from unittest.mock import Mock +from data import Data1, Data2 +import pytest + + +@pytest.fixture +def mock_bun(): + mock_for_bun = Mock() + mock_for_bun.get_name.return_value = Data1.bun_name + mock_for_bun.get_price.return_value = Data1.bun_price + return mock_for_bun + + +@pytest.fixture +def mock_bun_2(): + mock_for_bun_2 = Mock() + mock_for_bun_2.get_name.return_value = Data2.bun_name + mock_for_bun_2.get_price.return_value = Data2.bun_price + return mock_for_bun_2 + + +@pytest.fixture +def mock_sauce(): + mock_for_sauce = Mock() + mock_for_sauce.get_name.return_value = Data1.sauce_name + mock_for_sauce.get_price.return_value = Data1.sauce_price + mock_for_sauce.get_type.return_value = Data1.sauce_type + return mock_for_sauce + + +@pytest.fixture +def mock_sauce_2(): + mock_for_sauce_2 = Mock() + mock_for_sauce_2.get_name.return_value = Data2.sauce_name + mock_for_sauce_2.get_price.return_value = Data2.sauce_price + mock_for_sauce_2.get_type.return_value = Data2.sauce_type + return mock_for_sauce_2 + + +@pytest.fixture +def mock_filling(): + mock_for_filling = Mock() + mock_for_filling.get_name.return_value = Data1.filling_name + mock_for_filling.get_price.return_value = Data1.filling_price + mock_for_filling.get_type.return_value = Data1.filling_type + return mock_for_filling + + +@pytest.fixture +def mock_filling_2(): + mock_for_filling_2 = Mock() + mock_for_filling_2.get_name.return_value = Data2.filling_name + mock_for_filling_2.get_price.return_value = Data2.filling_price + mock_for_filling_2.get_type.return_value = Data2.filling_type + return mock_for_filling_2 + + +@pytest.fixture +def db(): + return Database() \ No newline at end of file diff --git a/data.py b/data.py new file mode 100644 index 000000000..1fb311d76 --- /dev/null +++ b/data.py @@ -0,0 +1,49 @@ +from praktikum.ingredient_types import INGREDIENT_TYPE_SAUCE, INGREDIENT_TYPE_FILLING + + +class Data1: + bun_name = 'Флюоресцентная булка R2-D3' + bun_price = 988 + + sauce_type = INGREDIENT_TYPE_SAUCE + sauce_name = 'Соус традиционный галактический' + sauce_price = 15 + + filling_type = INGREDIENT_TYPE_FILLING + filling_name = 'Мясо бессмертных моллюсков Protostomia' + filling_price = 1350 + + burger_final_cost = bun_price * 2 + sauce_price + filling_price + + +class Data2: + bun_name = 'Краторная булка N-200i' + bun_price = 1255 + + sauce_type = INGREDIENT_TYPE_SAUCE + sauce_name = 'Соус с шипами Антарианского плоскоходца' + sauce_price = 88 + + filling_type = INGREDIENT_TYPE_FILLING + filling_name = 'Сыр с астероидной плесенью' + filling_price = 4142 + + burger_final_cost = bun_price * 2 + sauce_price + filling_price + + +class TestDataBase: + test_data_base_buns = [ + [0, 'black bun', 100], + [1, 'white bun', 200], + [2, 'red bun', 300] + ] + + test_data_base_ingredients = [ + [0, INGREDIENT_TYPE_SAUCE, 'hot sauce', 100], + [1, INGREDIENT_TYPE_SAUCE, 'sour cream', 200], + [2, INGREDIENT_TYPE_SAUCE, 'chili sauce', 300], + [3, INGREDIENT_TYPE_FILLING, 'cutlet', 100], + [4, INGREDIENT_TYPE_FILLING, 'dinosaur', 200], + [5, INGREDIENT_TYPE_FILLING, 'sausage', 300] + + ] \ No newline at end of file diff --git a/__init__.py b/praktikum/__init__.py similarity index 100% rename from __init__.py rename to praktikum/__init__.py diff --git a/praktikum/__pycache__/__init__.cpython-314.pyc b/praktikum/__pycache__/__init__.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df7ed658c1aa61406b2ceb25b5cdd0c03cdc5d02 GIT binary patch literal 238 zcmdPq>P{wCAAftgHh(Vb_lhJP_LlF~@{~09tr2|MfTg8MH zrxq2*T$p=d$Aw)N_FdS0VZ();F)pda*(Lb}F&7qH*m|+?V$+2k7aM?*n}CvgfeN?A zT$lo+_5)S#yRawb!h{Q(fNJ(#Y`?Gpr21lyolM zn1Z6j?2^pv(%hK%_{_Y_lK6PNg34PQHo5sJr8%i~MXW$)fm~kc literal 0 HcmV?d00001 diff --git a/praktikum/__pycache__/bun.cpython-314.pyc b/praktikum/__pycache__/bun.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8d8c75e51ecfe9a82668bba88963be15097d281 GIT binary patch literal 1653 zcmb7E&2Jk;6rb6(owdnVX+v5Ufgw_ah2*LNB!nu2O3x8EB9*A=XzOgsD(kg7J3gc* z(;!Nvh=K%%NO0liTPOrV(}aIv_EznM11D~YjBt7U|Fy{`}B+xouVD?z^>-!OhduM~l$2 z@%0u#F7OUpVOOoUKWA(e+85b}{8L`#%lry31m))pl7AC=NhWj~UXpD|zwVW-#Ez6q zvTH%pRgiLPP1$f&G9^SkaHD9|uPY%UI{0empG~m$->H2Rc`~Z$9}xC^B({$fey?5f zqIK15)%1@5;j{P_;_txtIKP_y7XE(_cKSh0f35GqhhW?x?|7?HT2@{VxUzJyEw9r9 zm;6@HY>4xETYa^Ky!VSZwa+N1UGK)%8#x)ZNGdc_MsKffq%AP$Y zvb}sntUG6<9?Yyx5DpjR2-)eqgiVKCo(+cE>9ISHOPLinK%9Fxg3)KoHIl0%0*Jau|2|8TDORYA@`@xM|J;$poLEKe%+ zIgZFInT1=Dlb&kJu*{_cv1~~iMEM-Zpq3^wIYruO5Mw!oje(43&m1$5?FGX|F~Pws zLc?H{4(|&4U|<+$3rwDXj2H;1E|(|4B04(6<+`VY=|+RgP%^O$aG5!IcjL~6c219C z7*^t$aFO$ABza;_MS~ED#?UAd48`rY3>!rPFSDKz4XV2&;Ks4YQ}$*ilPPMF$D)a4 zgvQM~H??!d#2}x?9ZUFCp}z=4^jATMMsu|t&>ll_qwNL*%Zw0fzKm4hhhEr(c|wTQ zW?cwLc}kiV`7%f{hjGVX`E}tcCH-q{V!Z literal 0 HcmV?d00001 diff --git a/praktikum/__pycache__/burger.cpython-314.pyc b/praktikum/__pycache__/burger.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7e7e62542fc15de670c46caf983344920da96c9 GIT binary patch literal 4244 zcmb_f|5F>s72iAQq>~UJj6u|P(19sN5yb`5#Km9Y7(2yD%TRfOGqK_uS)ARgg{15q zjm=Nk&cry))X7XH#hrErI-T+G8*xfP{Dt^WxT_qCxtUBe)9DZS&6G~bk9}|NPLc(+ z<4pI5w|j5jzJ2?7Uv@8ER~sbItdoCN1s@^*zz?^1ox$2c7)+5GPcBIXsbtE_f_^ zmMUYalGW4p0-HLk$=XNoor2xpAUc;II)BQqdzwiOY|*_5K0eu-O6};Tm#46CTQ5f(L;;aN!kafn%(B zkr`{g4dzdQ#s%{oX7J|{?o^4yVoxv)Sd|*O*+Yo9)((Ryk|3ibTbk^_uab0v>?HHt z@H}sMPETa58nqNS8itjoWX@U_S_6G*zF*{yjx@cUtajvRr$x{aVzRU75{os&f&Os4Yy4ZE#eyGKb!3L^~=YFG9!q?)!w_%1E zi|GUihQh_r4l}f4=GDK2c5cMZ3sUIjwN4<9%jpEqGMk6Y_OKwOXrdL!DsO>J044n) zd_Nh;9U!GefjH?q#36)3+}!bptpE79{cW3C8G)Dx@GY)k20u;Ao{%<;ZUNL(wQ_X3 z?}o}K_c&3mW}&3(mM5Rf0~V}gAQm(ZL_>=^U8mJoyR6x9SrwmwvI|yj4EaDYzR!&B zE5=_i<1gG33h|d7h(FutMiFNkVvSrs)fl*5b}Bc#FouUmaD59uOg@A zxmUIm5+JQ)l!J)o7#`qE6tMzlq1@-GnpW(Tw0&#|Hj7m?=4DA@*8_bH7lj?qmew+; zUW6&|X?W}J#Sg?{xZMo57s4I0Z+;o>nijs^)>_>5?EP)ePQSboYA80v%%)hODgI?B z{_fFL57{1n=p*5#=};Nh?{%rrJ}?4&?9p`kRn6VUy|_jy z;=mPkWxy5>XnDM~-af(A6(z60aqT$T)Vim*S}SZ2`aIQoD_hJNVPgN^x>Ep{f z68;f<3Y5ya6)_86B>hMhBFP_<# ziyhCK9nTj!ep-+QiqaudI#iGj8_~ggz4u-(9(~O``dZ=W>&B6j#>qE~?WZ1uWH%`T z;cInQ>t>o~y*I=;u_*PLQg1=pV?_HGhK$I8`{KbBv7U)UX1CsGoog+$^%_#25!rKJ z?EkvH@!Ex}7iJ=b`ZhysV<|;LaE{?v9X`|%NqG7OWqCX|Hj%+GJc{3(NM)RvdRacB zQccgOStXl;X}>Iw<BfE=>P$%y0Q1aPX;!sc6-ferkH)8BXy^ zu(p$! Gnfot4^up`_ literal 0 HcmV?d00001 diff --git a/praktikum/__pycache__/database.cpython-314.pyc b/praktikum/__pycache__/database.cpython-314.pyc new file mode 100644 index 0000000000000000000000000000000000000000..32a8fd4315de61d1750ad93a5af53cb6364de6f0 GIT binary patch literal 2891 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 S@?=8*5_{WBypp&XMeqkVpT@la literal 0 HcmV?d00001 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/praktikum.py b/praktikum/praktikum.py similarity index 100% rename from praktikum.py rename to praktikum/praktikum.py diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..6b49a3c71a054ffd73d95395e37b49f59f6ac714 GIT binary patch literal 216 zcmZur%L;%n49i*YQ&FjHJzX!656daO>!O$46$KBhXfOLto(WQ zn#hqNL&;tsMub0hj}eZyEniE>J@d>qb&($Cb`{Tg@WFaLi|0qhUGAjX@iUA KRtJs>9N}F%kRjUu literal 0 HcmV?d00001 diff --git a/tests/test_bun.py b/tests/test_bun.py new file mode 100644 index 000000000..71e096fea --- /dev/null +++ b/tests/test_bun.py @@ -0,0 +1,13 @@ +from conftest import * +import allure + + +class TestBun: + + @allure.title('Проверка работы метода get_name, который получает название булки') + def test_get_name_bun_success(self, mock_bun): + assert mock_bun.get_name() == Data1.bun_name + + @allure.title('Проверка работы метода get_price, который получает стоимость булки') + def test_get_price_bun_success(self, mock_bun_2): + assert mock_bun_2.get_price() == Data2.bun_price \ No newline at end of file diff --git a/tests/test_burger.py b/tests/test_burger.py new file mode 100644 index 000000000..23cf298f8 --- /dev/null +++ b/tests/test_burger.py @@ -0,0 +1,73 @@ +from praktikum.burger import Burger +from conftest import * +import pytest +import allure + + +class TestBurger: + @allure.title('Проверка работы метода set_buns, добавляющего булочку в бургер') + def test_set_buns_success(self, mock_bun): + burger = Burger() + burger.set_buns(mock_bun) + assert burger.bun == mock_bun + + @allure.title('Проверка работы метода add_ingredient, добавляющего ингредиенты в бургер') + @allure.description('С помощью параметризации выполняем три теста: проверяем по очереди ' + 'добавление соуса и двух разных начинок') + @pytest.mark.parametrize('ingredients, added_ingredient', [ + [Data1.sauce_name, Data1.sauce_name], + [Data1.filling_name, Data1.filling_name], + [Data2.filling_name, Data2.filling_name] + ] + ) + def test_add_ingredient_success(self, ingredients, added_ingredient): + burger = Burger() + burger.add_ingredient(ingredients) + assert burger.ingredients == [added_ingredient] and len(burger.ingredients) == 1 + + @allure.title('Проверка работы метода remove_ingredient, удаляющего ингредиент из бургера') + @allure.description('С помощью параметризации выполняем два теста: проверяем по очереди ' + 'удаление соуса и начинки') + @pytest.mark.parametrize('ingredients, removed_ingredient', [ + [Data1.sauce_name, Data1.sauce_name], + [Data2.filling_name, Data2.filling_name] + ] + ) + def test_remove_ingredient_success(self, ingredients, removed_ingredient, mock_filling): + burger = Burger() + burger.add_ingredient(mock_filling) + burger.add_ingredient(ingredients) + burger.remove_ingredient(1) + assert removed_ingredient not in burger.ingredients and mock_filling in burger.ingredients + + @allure.title('Проверка работы метода move_ingredient, перемещающего ингредиенты в бургере') + def test_move_ingredient_success(self, mock_sauce, mock_filling): + burger = Burger() + burger.add_ingredient(mock_sauce) + burger.add_ingredient(mock_filling) + burger.move_ingredient(0, 1) + assert len(burger.ingredients) == 2 + assert burger.ingredients[0] == mock_filling and burger.ingredients[1] == mock_sauce + + @allure.title('Проверка работы метода get_price, высчитывающего конечную стоимость бургера') + def test_get_price_burger_success(self, mock_bun_2, mock_sauce_2, mock_filling_2): + burger = Burger() + burger.set_buns(mock_bun_2) + burger.add_ingredient(mock_sauce_2) + burger.add_ingredient(mock_filling_2) + assert burger.get_price() == Data2.burger_final_cost + + @allure.title('Проверка работы метода get_receipt, получающего рецепт собранного бургера и его стоимость') + def test_get_receipt_success(self, mock_bun, mock_sauce, mock_filling, mock_filling_2): + burger = Burger() + burger.set_buns(mock_bun) + burger.add_ingredient(mock_sauce) + burger.add_ingredient(mock_filling) + burger.add_ingredient(mock_filling_2) + assert burger.get_receipt() == ('(==== Флюоресцентная булка R2-D3 ====)\n' + '= sauce Соус традиционный галактический =\n' + '= filling Мясо бессмертных моллюсков Protostomia =\n' + '= filling Сыр с астероидной плесенью =\n' + '(==== Флюоресцентная булка R2-D3 ====)\n' + '\n' + f'Price: {burger.get_price()}') \ No newline at end of file diff --git a/tests/test_database.py b/tests/test_database.py new file mode 100644 index 000000000..5113d56a7 --- /dev/null +++ b/tests/test_database.py @@ -0,0 +1,25 @@ +from data import TestDataBase +from conftest import db +import pytest +import allure + + +class TestDB: + @allure.title('Проверка работы метода available_buns, получающего список доступных булок из базы') + @allure.description('С помощью параметризации выполняем три теста: проверяем по очереди ' + 'имя и стоимость каждой булки') + @pytest.mark.parametrize('index_bun, bun_name, bun_price', TestDataBase.test_data_base_buns) + def test_available_buns_db_success(self, db, index_bun, bun_name, bun_price): + data_buns = db.available_buns() + assert data_buns[index_bun].get_name() == bun_name and data_buns[index_bun].get_price() == bun_price + + @allure.title('Проверка работы метода available_ingredients, получающего список доступных ингредиентов из базы') + @allure.description('С помощью параметризации выполняем шесть тестов: проверяем по очереди ' + 'имя, тип и стоимость каждого ингредиента') + @pytest.mark.parametrize('index_i, type_ingredient, name_ingredient, price_ingredient', + TestDataBase.test_data_base_ingredients) + def test_available_ingredients_db_success(self, db, index_i, type_ingredient, name_ingredient, price_ingredient): + data_ingredients = db.available_ingredients() + assert (data_ingredients[index_i].get_name() == name_ingredient and + data_ingredients[index_i].get_type() == type_ingredient and + data_ingredients[index_i].get_price() == price_ingredient) \ No newline at end of file diff --git a/tests/test_ingredient.py b/tests/test_ingredient.py new file mode 100644 index 000000000..f80a56698 --- /dev/null +++ b/tests/test_ingredient.py @@ -0,0 +1,28 @@ +from conftest import * +import allure + + +class TestIngredient: + @allure.title('Проверка работы метода get_name, получающего название соуса') + def test_get_name_sauce_success(self, mock_sauce): + assert mock_sauce.get_name() == Data1.sauce_name + + @allure.title('Проверка работы метода get_name, получающего название начинки') + def test_get_name_filling_success(self, mock_filling): + assert mock_filling.get_name() == Data1.filling_name + + @allure.title('Проверка работы метода get_price, получающего стоимость соуса') + def test_get_price_sauce_success(self, mock_sauce_2): + assert mock_sauce_2.get_price() == Data2.sauce_price + + @allure.title('Проверка работы метода get_price, получающего стоимость начинки') + def test_get_price_filling_success(self, mock_filling_2): + assert mock_filling_2.get_price() == Data2.filling_price + + @allure.title('Проверка работы метода get_type, получающего тип ингредиента для соуса') + def test_get_type_sauce_success(self, mock_sauce): + assert mock_sauce.get_type() == Data1.sauce_type + + @allure.title('Проверка работы метода get_type, получающего тип ингредиента для начинки') + def test_get_type_filling_success(self, mock_filling): + assert mock_filling.get_type() == Data1.filling_type \ No newline at end of file