Django app pytest Ключевая ошибка при тестировании
У меня возникла проблема с тестированием одного из представлений в моем приложении django. Я использую pytest.
Вот представление, которое я собираюсь протестировать:
class IngredientDetailsView(View):
def get(self, request, id):
ingredient = Ingredient.objects.get(id=id)
return render(request, 'diet_app/ingredient_details.html', {'ingredient': ingredient})
и его модель:
class Ingredient(models.Model):
name = models.CharField(max_length=50, unique=True)
nutrient = models.IntegerField(choices=NUTRIENTS)
glycemic_index = models.IntegerField(choices=GLYCEMIC_INDEX)
Вот мое приспособление и тест:
@pytest.fixture
def example_ingredient():
return Ingredient.objects.create(
name='apple',
nutrient=2,
glycemic_index=2
)
@pytest.mark.django_db
def test_ingredient_view(client, example_ingredient):
response = client.get(f'/ingredient_details/{example_ingredient.id}/')
assert response.status_code == 200
assert response.context['name'] == 'apple'
assert response.context['nutrient'] == 2
assert response.context['glycemic_index'] == 2
Я все еще сталкиваюсь с KeyErrors:
FAILED diet_app/tests.py::test_ingredient_view - KeyError: 'name'
и не знаю почему.
Я новичок в использовании pytest и все еще учусь. Я предполагаю, что проблема заключается в утверждениях полей в моем тесте, потому что когда я удалил поле 'name', ошибка ключа изменилась на 'nutrient'