сбой теста: соответствующий запрос не существует

#python #django

#python #django

Вопрос:

Я потратил целый день, пытаясь выяснить, откуда может взяться эта ошибка, но тщетно. Моя тестовая функция следующая:

 def test_match_data_while_updating(self):
    # TST N.1 : Match is live
    # -------     
    match_updated_data1 = {
        'match': {
            'id': 1,
            'status': 'not_started',
        },
    }
    match1 = Match.objects.get(id=1)
    request = self.__class__.factory.put('', match_updated_data1, format='json')        
    add_authentication_to_request(request, is_staff=True)
    response = update_match_video(request)
    self.assertEqual(Match.objects.get(id=1).status,'live')
  

И это соответствующая часть функции, которую я тестирую:

 def update_match_video(request):
    if not request.data.get('match').get('id'):
        return JsonResponse({}, status=status.HTTP_400_BAD_REQUEST)
    match_id = valid_data_or_error(request.data, method='PUT')['match_data']['id']

    try:
        match = Match.objects.get(id = match_id)
        db_match_status = match.status

        if db_match_status == 'live':
            valid_data_or_error(request.data, method='PUT')['match_data']['status'] = 'live'
        elif db_match_status == 'closed':
            valid_data_or_error(request.data, method='PUT')['match_data']['status'] = 'closed'
    except:
        print('Match does not exist')
  

Когда я использую команду:

 $ python server/manage.py test --settings=skill.settings_test api.views.tests.test_views.ViewsTestCase
  

для запуска всех тестовых функций, содержащихся в файле / views /tests/test_views (этот файл содержит только один класс, который является ViewsTestCase со многими тестами), все тесты выполняются успешно, но когда я запускаю все свои тесты, которые находятся в папке / api / views, используя:

 $ python server/manage.py test --settings=skill.settings_test api.views 
  

Я получаю следующую ошибку:

ОШИБКА: test_match_data_while_updating (api.views.tests.test_views.ViewsTestCase)

Обратная трассировка (последний последний вызов):

Файл «/home/yosra/Bureau/app/master/server/api/views/tests/test_views.py «, строка 226, в test_match_data_while_updating match1 = Match.objects.get(id=1)

Файл «/home/yosra/Bureau/app/master/venv/lib/python3.6/site-packages/django/db/models/manager.py «, строка 82, в manager_method возвращает getattr(self.get_queryset(), name)(* аргументы, ** kwargs)

Файл «/home/yosra/Bureau/app/master/venv/lib/python3.6/site-packages/django/db/models/query.py «, строка 399, в get self.model._meta.object_name

api.модели.совпадают.Совпадение.DoesNotExist: запрос на совпадение не существует.

моя тестовая база данных не пуста, и она содержит экземпляр соответствия с идентификатором=1. Также нет тестовой функции, которая удаляла бы этот элемент из моей базы данных. Кто-нибудь, пожалуйста, может дать мне представление о том, откуда это может исходить?

Я ценю вашу помощь

Комментарии:

1. Почему вы говорите, что тестовая база данных не пуста? Как вы его заполнили? Тесты Django всегда начинаются с пустой базы данных.

2. да, я имею в виду, что он заполнен, у меня есть файл populate_db.py это делает это для меня и кучи текстовых файлов, содержащих данные

3. Вы запускаете свои тесты с двумя разными настройками skill.settings_test и skillcorner.settings_test . Возможно, есть что-то, что нужно сделать…

4. Я только что обновил свой пост, нет, дело не в настройках, спасибо!