Тестирование при помощи Unittest — пример 4

В коде задания описан метод summ.

Если вызвать этот метод без аргументов, он вернёт ноль, а если передать в метод summ один аргумент — он вернёт значение этого аргумента.

Это не лучшее поведение для калькулятора, надо его изменить. Методика TDD подразумевает, что сначала пишутся тесты, а потом код.

В этом задании напишите тесты, которые проверяют, что summ возвращает None, если количество переданных аргументов меньше двух.

Подсказка:
В Unittest есть встроенный метод для проверки на NoneassertIsNone(x)

Маленькие тесты — это всегда хорошо. Одна проверка — один тест:

  • test_summ_no_argument — что будет, если функция вызвана без аргументов.
  • test_summ_one_argument — что будет, если функция вызвана с одним аргументом.

Код:

import unittest


class Calculator:
    def summ(self, *args):
        """Возвращает сумму принятых аргументов."""       
        sum = 0
        for i in args:
            sum += i
        return sum


class TestCalc(unittest.TestCase):
    """Тестируем Calculator."""
    @classmethod
    def setUpClass(cls):
        """Вызывается однажды перед запуском всех тестов класса."""
        cls.calc = Calculator()

    def test_summ(self):
        act = TestCalc.calc.summ(3, -3, 5)
        self.assertEqual(act, 5, 'summ работает неправильно')

    def test_summ_no_argument(self):
        act = TestCalc.calc.summ()
        self.assertIsNone(act, None, 'нет аргументов')

    def test_summ_one_argument(self):
        act = TestCalc.calc.summ(5)
        self.assertIsNone(act, None, '1 аргумент')




Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: