Django pytest / update delete view testing
Я работаю над тестированием на pytest для моего первого приложения django, что-то вроде кулинарной книги.
У меня проблемы с редактированием/удалением тестов представления.
Например, у меня есть тест для тестирования добавления представления рецепта.
Вот модель рецепта:
class Recipe(models.Model):
"""Instructions how to prepare a single dish."""
title = models.CharField(max_length=50)
cooking_time = models.IntegerField(help_text='in minutes', validators=[MinValueValidator(1), MaxValueValidator(5000)])
difficulty_level = models.IntegerField(choices=DIFFICULTY_LEVELS, default=1)
description = models.TextField()
created = models.DateTimeField(auto_now_add=True)
cuisine = models.ForeignKey('Cuisine', on_delete=models.CASCADE, null=True)
ingredient = models.ManyToManyField(Ingredient, through='IngredientRecipe')
meal_plan = models.ManyToManyField('MealPlan', through='RecipeMealPlan')
вот его крепление:
@pytest.fixture()
def example_recipe():
rec = Recipe.objects.create(title='rec', cooking_time=10, difficulty_level=2, description='bla, bla, bla')
return rec
И тесты, которые работают нормально:
@pytest.mark.django_db
def test_add_recipe(client, example_recipe):
dct = {
'title': 'rec',
'cooking_time': 10,
'difficulty_level': 2,
'description': 'bla, bla, bla'
}
url = reverse('add-recipe')
response = client.post(url, dct)
assert response.status_code == 302
assert Recipe.objects.get(**dct)
@pytest.mark.django_db
def test_add_recipe2(client):
url = reverse('add-recipe')
response = client.get(url)
assert response.status_code == 302
Теперь я пытаюсь написать тест для обновления/удаления представлений рецепта.
В настоящее время мой тест обновления рецепта выглядит следующим образом:
@pytest.mark.django_db
def test_ingredient_update_view(client, example_ingredient):
url = reverse('update-ingredient', kwargs={'id': example_ingredient.id})
response = client.get(url)
assert Ingredient.objects.save(
name='cos',
nutrient=2,
glycemic_index=2
)
Я знаю, что это неправильно, но у меня возникают проблемы с тем, чтобы заставить это работать. То же самое с удалением представления.
Может кто-нибудь взглянуть на вышеуказанное и дать мне совет?
Заранее спасибо за любую помощь.
@pytest.mark.django_db
def test_ingredient_update_view(client, example_ingredient):
url = reverse('update-ingredient', kwargs={'pk': example_ingredient.pk})
response = client.get(url)
obj = Ingredient.objects.get(example_ingredient.pk)
obj.name = 'else'
obj.save()
assert response.status_code == 302
текущая ошибка:
TypeError: 'int' object is not iterable