Как я могу загрузить все фикстуры в определенной директории при написании тест-кейсов в Django с помощью Pytest

У меня есть несколько фикстур (json файлы) в папке admin, и мне нужно загрузить все фикстуры из этой папки без ручной записи расположения всех фикстур.

Я попробовал следующий код, но он не работает

@pytest.fixture(scope='session')
def load_admin_data(django_db_setup, django_db_blocker):
    fixtures = [
        'fixtures_for_tests/admin/*.json'
    ]

    with django_db_blocker.unblock():
        call_command('loaddata', *fixtures)

Мне нужно указать местоположение каждого светильника, как показано ниже:

@pytest.fixture(scope='session')
def load_admin_data(django_db_setup, django_db_blocker):
    fixtures = [
        'fixtures_for_tests/admin/data1.json',
        'fixtures_for_tests/admin/data2.json',
    ]

    with django_db_blocker.unblock():
        call_command('loaddata', *fixtures)

Примечание: Один из подходов, который я нашел, заключается в том, чтобы получить все местоположения приспособлений с помощью некоторого скрипта

есть ли другой способ указать местоположение приспособления с помощью некоторого шаблона regex во время загрузки данных?

Я ожидаю, что я смогу задать динамический путь или regex-шаблон расположения приспособления

Вы можете использовать glob из python, который используется для возврата всех путей к файлам, которые соответствуют определенному шаблону

import glob

@pytest.fixture(scope="session")
def load_admin_data(django_db_setup, django_db_blocker):
    with django_db_blocker.unblock():
        for json_file in glob.glob('fixtures_for_tests/admin/*'):
            call_command('loaddata',json_file)

Также, если вы хотите добавить больше папок, вы можете сделать это по

import glob

@pytest.fixture(scope="session")
def django_db_setup1(django_db_setup, django_db_blocker):
    with django_db_blocker.unblock():
        call_command('loaddata',
                     glob.glob('fixtures_for_tests/basic_fixtures/*'), glob.glob('fixtures_for_tests/admins/*'))
Вернуться на верх