Ответ
Пример комплексного тестирования операций CRUD (Create, Read, Update, Delete) в PostgreSQL.
Контекст: Тестирование сервиса, работающего с таблицей users.
-- 1. CREATE (Создание) - Проверка вставки данных
INSERT INTO users (id, name, email) VALUES (1000, 'Иван Иванов', 'ivan@test.com');
-- Проверка: Запись должна появиться в БД
SELECT * FROM users WHERE id = 1000;
-- 2. READ (Чтение) - Проверка выборки данных
-- Проверка точного соответствия
SELECT name, email FROM users WHERE id = 1000;
-- Ожидаемый результат: одна запись с полями 'Иван Иванов', 'ivan@test.com'
-- 3. UPDATE (Обновление) - Проверка модификации данных
UPDATE users SET name = 'Иван Петров', email = 'ivan.p@test.com' WHERE id = 1000;
-- Проверка изменений
SELECT name FROM users WHERE id = 1000;
-- Ожидаемый результат: 'Иван Петров'
-- 4. DELETE (Удаление) - Проверка удаления данных
DELETE FROM users WHERE id = 1000;
-- Проверка, что запись удалена
SELECT COUNT(*) FROM users WHERE id = 1000;
-- Ожидаемый результат: 0
Ключевые аспекты тестирования БД, которые проверяет этот пример:
- Целостность транзакций (ACID): Операции должны выполняться атомарно. В реальном тесте их стоит обернуть в транзакцию с последующим откатом (
ROLLBACK). - Корректность данных: Проверяется, что данные сохраняются, читаются и изменяются точно.
- Работа с ограничениями: Неявно проверяются
PRIMARY KEYи условияWHERE.
Практический совет: Для автоматизации таких тестов используйте инструменты вроде pytest с фикстурами, которые создают и очищают тестовые данные перед/после каждого теста.