AssertionError в модульном тесте Django: Невозможно получить корректный счетчик из базы данных
Я сталкиваюсь с ошибкой AssertionError в своем модульном тесте Django при попытке сохранить POST-запрос к существующему списку. Несмотря на создание списка и успешную отправку POST-запроса, тест завершается со следующей ошибкой:
Failure
Traceback (most recent call last):
File "C:\ACode\TDD_Django\lists\tests.py", line 105, in test_can_save_a_POST_request_to_an_existing_list
self.assertEqual(Item.objects.count(), 1)
AssertionError: 0 != 1
Вот соответствующий код:
class NewListTest(TestCase):
def test_can_save_a_POST_request_to_an_existing_list(self):
# Arrange inputs and targets.
correct_list = List.objects.create()
# Act on the target behavior.
self.client.post(
f'/lists/{correct_list.id}/add_item',
data={'item_text': 'A new item for an existing list'},
)
# Assert expected outcomes.
self.assertEqual(Item.objects.count(), 1)
new_item = Item.objects.get()
self.assertEqual(new_item.text, 'A new item for an existing list')
self.assertEqual(new_item.list, correct_list)
URL: path('lists/<int:list_id>/add_item/', views.add_item, name='add_item')
Вид:
def add_item(request, list_id):
our_list = List.objects.get(id=list_id)
Item.objects.create(text=request.POST['item_text'], list=our_list)
return redirect(f'/lists/{list_id}/')
Модель:
def add_item(request, list_id):
our_list = List.objects.get(id=list_id)
Item.objects.create(text=request.POST['item_text'], list=our_list)
return redirect(f'/lists/{list_id}/')
Я протестировал код вручную, используя библиотеку requests, и убедился, что представление (add_item
) работает правильно. Однако модульный тест по-прежнему не работает. Любые соображения о том, почему этот тест может быть неудачным, были бы очень признательны.