kancelyary_project/tests/test_calculation.py

60 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import unittest
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from database import calculate_discount, get_discount_description
class TestCalculations(unittest.TestCase):
"""Тестирование алгоритмов расчета скидок"""
def test_1_discount_thresholds(self):
"""Тест пороговых значений скидок"""
test_cases = [
(0, 0),
(100000, 0),
(149999, 0),
(150000, 15),
(175000, 15),
(199999, 15),
(200000, 30),
(250000, 30),
(299999, 30),
(300000, 50),
(500000, 50),
(1000000, 50),
]
for amount, expected_discount in test_cases:
with self.subTest(amount=amount):
self.assertEqual(calculate_discount(amount), expected_discount)
def test_2_discount_descriptions(self):
"""Тест описаний скидок"""
self.assertEqual(get_discount_description(0), '0% (до 150 000 руб.)')
self.assertEqual(get_discount_description(15), '15% (150 000 - 199 999 руб.)')
self.assertEqual(get_discount_description(30), '30% (200 000 - 299 999 руб.)')
self.assertEqual(get_discount_description(50), '50% (300 000+ руб.)')
self.assertEqual(get_discount_description(99), '0% (до 150 000 руб.)')
def test_3_edge_cases(self):
"""Тест граничных случаев"""
self.assertEqual(calculate_discount(150000), 15)
self.assertEqual(calculate_discount(200000), 30)
self.assertEqual(calculate_discount(300000), 50)
self.assertEqual(calculate_discount(149999), 0)
self.assertEqual(calculate_discount(199999), 15)
self.assertEqual(calculate_discount(299999), 30)
def test_4_negative_amounts(self):
"""Тест отрицательных сумм"""
self.assertEqual(calculate_discount(-1000), 0)
self.assertEqual(calculate_discount(-150000), 0)
if __name__ == '__main__':
unittest.main()