Как я могу загрузить все фикстуры в определенной директории при написании тест-кейсов в 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/*'))