Как изменить все базы данных при переопределении DiscoverRunner setup_databases с помощью parallel
Я запускаю тесты с --parallel и хочу добавить некоторый объект в каждую базу данных, которая создается (для каждого процесса).
В настоящее время у меня есть CustomTestRunner, который наследуется от DiscoverRunner.
В этом классе я переопределяю метод setup_databases.
после вызова super().setup_databases() я вношу изменения в db (например, Users.objects.create(....))
Изменения происходят только в одной из баз данных, но я хочу, чтобы эти изменения были во всех базах данных.
Как я могу этого добиться? Мой пользовательский тестовый бегунок
Вы можете зарегистрировать код для запуска по сигналу post-migrate. Например:
if settings.TESTING_MODE:
@receiver(post_migrate)
def modify_database(*, sender: AppConfig, **kwargs):
# The signal is emitted once for every app’s migrations,
# so if you only want it to run once, check for your app’s
# migrations to finish.
if sender.name != YourAppConfig.name:
return
# Your code here.
...
Это будет запущено после создания первой базы данных, но до того, как остальные будут зеркалированы из нее, поэтому все, что вы введете в эту базу данных, будет отражено во всех остальных.