Условие:
Разработаем проект содержащий класс, который содержит два метода. Первый метод вычисляет сумму двух целых чисел, второй произведение чисел.
Задача: разработать модульный тест, который будет проверять корректность вычислений.
Задания для самостоятельного выполнения по вариантам:
Разработать модульный тест для класса:
1. Комплексное число
2. Площадь примитивов (произвольный треугольник, круг, прямоугольник)
3. Класс расчета факториала
4. Класс нахождения НОК
5. Класс по собственному усмотрению.
Выбрать любой вариант из 1-4 и обязательно 5. Отчет в виде решения с подробными комментариями в среде программирования. Допускается рассмотреть принципы автоматизации на любом языке в любой среде программирования
Решение:
Ниже приведён пример решения на языке Python с подробными комментариями. В данном решении мы реализуем два класса и для них создаём модульные тесты с использованием стандартного модуля unittest: 1. Вариант 3 – класс для расчёта факториала. 2. ...
class Factorial: def calculate(self, n): Метод расчёта факториала числа n. Если n отрицательно, выбрасывается исключение ValueError. if n 0: raise ValueError(Факториал не определён для отрицательных чисел) # Инициализируем результат единицей (так определён факториал 0! = 1) result = 1 for i in range(1, n + 1): result *= i # на каждом шаге умножаем result на i return result -------------------------------------------------- ———————————————————————————— Шаг 2. Реализация класса для операций сложения и произведения Создадим класс Calculator с двумя методами: – add(a, b): возвращает сумму двух целых чисел. – multiply(a, b): возвращает произведение двух целых чисел. Код класса: -------------------------------------------------- class Calculator: def add(self, a, b): Вычисляет сумму двух чисел a и b. return a + b def multiply(self, a, b): Вычисляет произведение двух чисел a и b. return a * b -------------------------------------------------- ———————————————————————————— Шаг 3. Написание модульных тестов с использованием unittest Создадим тестовые классы для Factorial и Calculator. Мы проверим корректность вычисления для известных значений, а также обработку ошибок (например, факториал для отрицательного числа). Код модульных тестов: -------------------------------------------------- import unittest class TestFactorial(unittest.TestCase): def setUp(self): # Инициализируем экземпляр класса Factorial для каждого теста self.factorial = Factorial() def testzero(self): # 0! должно быть равно 1 self.assertEqual(self.factorial.calculate(0), 1) def testone(self): # 1! должно быть равно 1 self.assertEqual(self.factorial.calculate(1), 1) def testpositive(self): # Проверяем несколько положительных чисел self.assertEqual(self.factorial.calculate(3), 6) # 3! = 6 self.assertEqual(self.factorial.calculate(5), 120) # 5! = 120 def testnegative(self): # При вычислении факториала отрицательного числа должно возникать исключение ValueError with self.assertRaises(ValueError): self.factorial.calculate(-1) class TestCalculator(unittest.TestCase): def setUp(self): # Инициализируем экземпляр класса Calculator для каждого теста self.calculator = Calculator() def testddition(self): # Тестируем метод сложения self.assertEqual(self.calculator.add(2, 3), 5) self.assertEqual(self.calculator.add(-1, 1), 0) self.assertEqual(self.calculator.add(0, 0), 0) def testultiplication(self): # Тестируем метод умножения self.assertEqual(self.calculator.multiply(2, 3), 6) self.assertEqual(self.calculator.multiply(-1, 1), -1) self.assertEqual(self.calculator.multiply(0, 100), 0) if == : unittest.main() -------------------------------------------------- Комментарии по коду тестов: 1. Для каждого класса тестов (TestFactorial и TestCalculator) мы создаём метод setUp(), который создаёт нужный экземпляр тестируемого класса. 2. В TestFactorial проверяем: • Корректность вычисления факториала для 0 и 1. • Для положительных чисел (например, 3 и 5). • Что метод выбрасывает исключение ValueError при передаче отрицательного числа. 3. В TestCalculator проверяются операции сложения и умножения с различными входными данными (в том числе отрицательными и нулевыми). ———————————————————————————— Шаг 4. Запуск тестов Чтобы запустить тесты, скопируйте весь приведённый код в один файл (например, main.py) и выполните его. Если все тесты пройдут успешно, среда выведет сообщение об успешном прохождении тестов. ———————————————————————————— Итоговое решение Мы разработали два класса – Factorial и Calculator, для которых реализовали модульные тесты с подробными комментариями. Это демонстрирует принцип автоматизированного тестирования модулей (unit testing). Вы можете запускать и расширять данные тесты в любой удобной для вас среде программирования. Такое решение соответствует требованиям задания: вариант 3 (класс расчёта факториала) и вариант 5 (класс по собственному усмотрению – калькулятор с методами сложения и умножения). Надеюсь, это пошаговое объяснение поможет вам понять принцип построения модульных тестов и автоматизации проверки кода.