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.