Как изменить все базы данных при переопределении 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.
        ...
        

Это будет запущено после создания первой базы данных, но до того, как остальные будут зеркалированы из нее, поэтому все, что вы введете в эту базу данных, будет отражено во всех остальных.

Вернуться на верх