Django Я пытаюсь написать тест для моего представления add_post и он не работает

Мое мнение:

def add_post(request):
    if request.method == "POST":
        form = NewPostForm(request.POST, request.FILES)

        if form.is_valid():
            form.instance.author = request.user
            form.save()
            messages.success(request, "Your post was added successfully.")
            return redirect("food-feed")

        messages.info(
            request,
            "If you're adding a recipe you must include the ingredients, instructions and cooking time.",
        )

    form = NewPostForm()
    return render(request, "post/add_post.html", {"addpost_form": form})

forms.py

class NewPostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = [
            "title",
            "post_description",
            "main_image",
            "is_recipe",
            "ingredients",
            "recipe_description",
            "cooking_time",
        ]

test

from django.test import TestCase
from django.contrib.auth.models import User
from django.core.files.uploadedfile import SimpleUploadedFile 


class TestPost(TestCase):

    def setUp(self):
        self.user = User.objects.create_superuser(username='creatingsometest', password='passwordfortesting')

    def tearDown(self):
        self.user.delete()
    
    def test_add_post(self):
        self.client.login(username='creatingsometest', password='passwordfortesting')
        response = self.client.post(
            "/add-post/",
            {
                'title': 'TESTCASE TITLE', 
                'post_description': 'TESTCASE POSTDESCRIPTION', 
                'main_image': SimpleUploadedFile(name='test_image.jpg', content=''),
                'is_recipe': 'on',
                'ingredients': '',
                'recipe_description':'',
                'cooking_time': '',
                '_save': 'Save',
            },
        )
        self.assertEqual(response.status_code, 302)
        self.assertRedirects(response, "/food-feed")

Тест в случае неудачи

self.assertEqual(response.status_code, 302) AssertionError: 200 != 302

Также я не совсем понимаю, как работать с ImageField (main_image) и BooleanField (is_recipe). Что касается поля ImageField, я читал о "SimpleUploadedFile", но я не уверен, что использую его правильно. Когда я печатаю response.content над self.assertEqual, я вижу html, который соответствует форме add-post.

Вернуться на верх