#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. Я только что обновил свой пост, нет, дело не в настройках, спасибо!