Как запустить тест django на пустой базе данных вне тестового бегуна?

Наша база данных принимает файлы загрузки, присланные пользователями, и на данный момент наши администраторы собираются загружать присланные файлы вручную для решения проблем с данными. Существует 2 типа файлов. Чтобы второй файл успешно загрузился, первый файл должен успешно загрузиться. Поскольку мы собираемся заниматься этим самостоятельно, я пишу страницу проверки данных, которая загружает первый файл в режиме отладки, чтобы пользователь мог решить такие простые вопросы, как уникальные поля и контролируемая лексика.

Но для того чтобы протестировать второй файл, мне нужно временно загрузить первый файл. Я решил сделать это, создав класс TestCase, который не является частью нашего набора модульных тестов. (Возможно, есть лучший способ сделать это, чем выбранная мной стратегия - так что я открыт для предложений.)

Когда я запускаю тесты из представления валидации в views.py, тесты работают, и данные не сохраняются в базе данных - однако я не получаю чистую/пустую тестовую базу данных для работы. Чтобы этот код гарантированно работал, мне нужно выяснить, как создать свежую пустую копию тестовой базы данных. Я нашел этот пост о стеках , но я не могу заставить предложение в ответе работать. Даже если я вызываю setup_test_environment(), тестовая база данных все равно заполняется в самом начале (если это вообще тестовая копия базы данных). Может быть, я вызываю setup_test_environment() не из того места?

Вот что у меня есть:

views.py

class DataValidationView(FormView):
    form_class = DataSubmissionValidationForm

    ...

    def form_valid(self, form):

        ...

        # Load the animal and sample data into a test database, so the data is available for the accucor file validation
        validation_test = self.ValidationTest()
        try:
            validation_test.validate_animal_sample_table(self.animal_sample_file.temporary_file_path())
        except Exception as e:
            valid = False

        # Load the accucor file into a temporary test database in debug mode
        for af in self.accucor_files:
            try:
                validation_test.validate_accucor(af.temporary_file_path())
            except Exception as e:
                valid = False

    ...

    class ValidationTest(TestCase):
        def __init__(self):
            setup_test_environment()
            self.setUpTestData()

        @classmethod
        def setUpTestData(cls):
            # Tried this in 2 places...
            setup_test_environment()
        
        def validate_animal_sample_table(self, animal_sample_file, table_headers):
            call_command("load_animals_and_samples",...)

        def validate_accucor(self, accucor_file):
            call_command("load_accucor_msruns",...)
Вернуться на верх