💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №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
  • Что такое интеграционное тестирование?
  • Пример тестируемого кода
  • Интеграционные тесты
  • Объяснение тестов
  • Запуск тестов

Интеграционное тестирование

20.01.2025 - Практическая работа №30. Интеграционное тестирование

Цель работы

Изучить интеграционное тестирование, написать примеры тестируемого кода и тестов. Тестов должно быть не менее 5 штук.


Что такое интеграционное тестирование?

Интеграционное тестирование — это процесс проверки взаимодействия между различными модулями приложения. Его цель — убедиться, что модули корректно обмениваются данными, выполняя совместную работу.


Пример тестируемого кода

Рассмотрим приложение, которое работает с пользователями и их заказами. Оно состоит из двух модулей: пользователь (User) и заказ (Order).

Модуль пользователя (user.py):

class User:
    def __init__(self, user_id, name):
        self.user_id = user_id
        self.name = name

    def get_user_info(self):
        return {
            "user_id": self.user_id,
            "name": self.name
        }

Модуль заказа (order.py):

from user import User

class Order:
    def __init__(self, order_id, user: User, total):
        self.order_id = order_id
        self.user = user
        self.total = total

    def get_order_summary(self):
        return {
            "order_id": self.order_id,
            "user": self.user.get_user_info(),
            "total": self.total
        }

Интеграционные тесты

Для тестирования мы используем библиотеку unittest.

Файл тестов (test_integration.py):

import unittest
from user import User
from order import Order

class TestIntegration(unittest.TestCase):

    def setUp(self):
        # Создаем тестовые данные
        self.user = User(user_id=1, name="Alice")
        self.order = Order(order_id=101, user=self.user, total=250.75)

    def test_user_info(self):
        # Проверяем метод get_user_info()
        user_info = self.user.get_user_info()
        self.assertEqual(user_info["user_id"], 1)
        self.assertEqual(user_info["name"], "Alice")

    def test_order_summary(self):
        # Проверяем метод get_order_summary()
        order_summary = self.order.get_order_summary()
        self.assertEqual(order_summary["order_id"], 101)
        self.assertEqual(order_summary["total"], 250.75)
        self.assertEqual(order_summary["user"], {"user_id": 1, "name": "Alice"})

    def test_order_total_is_float(self):
        # Убеждаемся, что total является числом с плавающей точкой
        self.assertIsInstance(self.order.total, float)

    def test_user_in_order(self):
        # Проверяем корректность связи User и Order
        self.assertEqual(self.order.user.name, "Alice")
        self.assertEqual(self.order.user.user_id, 1)

    def test_invalid_user(self):
        # Проверяем, что нельзя передать некорректный объект пользователя
        with self.assertRaises(AttributeError):
            invalid_user = "Invalid"
            Order(order_id=102, user=invalid_user, total=300.00)

if __name__ == "__main__":
    unittest.main()

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

  1. test_user_info: проверяет метод get_user_info в классе User.

  2. test_order_summary: проверяет метод get_order_summary в классе Order, включая корректность интеграции с объектом User.

  3. test_order_total_is_float: удостоверяется, что значение total является числом с плавающей точкой.

  4. test_user_in_order: проверяет связь между объектами User и Order.

  5. test_invalid_user: проверяет обработку ошибок при передаче некорректного объекта пользователя в заказ.


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

Для выполнения тестов сохраните код в файл test_integration.py и выполните:

python -m unittest test_integration.py

При успешном выполнении тестов вы увидите сообщение:

.....
----------------------------------------------------------------------
Ran 5 tests in 0.001s

OK
PreviousУказатели и операции со списками в PythonNextРабота с классами. Перегрузка методов

Last updated 4 months ago