💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Код программы
  • Тесты
  • Запуск тестов
  • Объяснение тестов

Модульное тестирование

26.12.2024

Код программы

# Основной код программы

# Математические операции
def add(a, b):
    """Сложение двух чисел"""
    return a + b

def divide(a, b):
    """Деление двух чисел"""
    if b == 0:
        raise ValueError("Деление на ноль невозможно")
    return a / b

# Обработка строк
def reverse_string(s):
    """Переворот строки"""
    return s[::-1]

def is_palindrome(s):
    """Проверка, является ли строка палиндромом"""
    s = s.lower().replace(" ", "")
    return s == s[::-1]

# Работа с массивами
def find_max(numbers):
    """Нахождение максимального значения в списке"""
    if not numbers:
        raise ValueError("Список пуст")
    return max(numbers)

Тесты

# Тестирование функций

def test_add():
    """Тестируем функцию add"""
    assert add(3, 2) == 5, "Сложение положительных чисел"
    assert add(-1, 1) == 0, "Сложение отрицательного и положительного"
    assert add(0, 0) == 0, "Сложение нулей"

def test_divide():
    """Тестируем функцию divide"""
    assert divide(10, 2) == 5, "Обычное деление"
    assert divide(-6, 2) == -3, "Деление отрицательного числа"
    try:
        divide(10, 0)
    except ValueError:
        pass  # Ожидаем ошибку при делении на ноль
    else:
        assert False, "Деление на ноль не вызвало ошибку"

def test_reverse_string():
    """Тестируем функцию reverse_string"""
    assert reverse_string("hello") == "olleh", "Переворот строки"
    assert reverse_string("") == "", "Переворот пустой строки"

def test_is_palindrome():
    """Тестируем функцию is_palindrome"""
    assert is_palindrome("level") is True, "Палиндром"
    assert is_palindrome("hello") is False, "Не палиндром"
    assert is_palindrome("A Santa at NASA") is True, "Палиндром с пробелами и регистрами"

def test_find_max():
    """Тестируем функцию find_max"""
    assert find_max([1, 2, 3]) == 3, "Максимум из положительных чисел"
    assert find_max([-1, -2, -3]) == -1, "Максимум из отрицательных чисел"
    try:
        find_max([])
    except ValueError:
        pass  # Ожидаем ошибку при пустом списке
    else:
        assert False, "Пустой список не вызвал ошибку"

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

if __name__ == "__main__":
    # Тестируем все функции
    test_add()
    test_divide()
    test_reverse_string()
    test_is_palindrome()
    test_find_max()
    print("Все тесты пройдены!")

Объяснение тестов

Математические операции

  1. test_add проверяет корректность сложения для положительных, отрицательных и нулевых чисел.

  2. test_divide проверяет деление на обычных числах и ожидает ошибку при делении на ноль.

Обработка строк

  1. test_reverse_string проверяет, что строка переворачивается правильно, включая случай с пустой строкой.

  2. test_is_palindrome проверяет строку на палиндром, учитывая регистр и пробелы.

Работа с массивами

  1. test_find_max проверяет нахождение максимума в списке чисел, включая случай с отрицательными числами, и ожидает ошибку на пустом списке.

PreviousС кодамиNextАбстрактные классы и интерфейсы в Python

Last updated 5 months ago