Я склоняюсь к такому подходу:
1) тестируешь АПИ? создавай контекст на уровень ниже. в датапровайдере (она же сетап фикстура) вызывай ОРМ тестируемых сущностей перед тестом; в конце теста удаляй сущность (ты знаешь, какое у нее уникальное поле)
2) когда создавать контекст? под каждый тест / тест класс / неймспейс? каждый решает сам в зависимости от скорости работы с базой, но я бы подумал в сторону единоразового балк-инсерта в базу, а значит подготовку тестовых данных на уровне session фикстуры.
данные при этом должны создавать уникально, чтобы исключить возможный "грязный" контекст между тест-кейсами
2,1) когда удалять контекст?
если тестовые данные изолированны и уникальны, то можно балк-делит операцией в конце сессии. А еще лучше оставить удаление данных и не удалять их под конец, а оставить для инвестигейшена упавших тестов.
Так когда тогда удалять данные кошерно?
- Перед началом следующего запуска тестов, когда будут чиститься все данные, префикс которых не совпадает с хешем, который ты специально генеришь на каждый запуск сессии
3) дропать бд ок, если данных мало. всегда стоит подумать как начинать предельно тупо и в лоб, если тебе за это ничего не будет.