【发布时间】:2020-11-06 11:14:54
【问题描述】:
我正在编写一个测试以查看表单数据是否在尝试创建 Post 对象的发布请求上进行验证。
tests.py
def setUp(self):
user = User.objects.create_user(email='test@gmail.com', password='test', name='test')
self.user = User.objects.get(email='test@gmail.com')
self.client.login(email=user.email, password=user.password)
@tag('fast')
def test_index(self):
client = Client()
response = client.post(reverse('index'), data={'user': self.user, 'body': 'Test'}, follow=True)
print(response, self.user)
self.assertTrue(Post.objects.filter(body='Test').exists())
但测试失败并显示消息 False is not true 暗示未创建主体为 "Test" 的对象。我已经尝试使用 urlencode 对数据进行编码,但没有帮助。
这是打印语句显示的内容:<TemplateResponse status_code=200, "text/html; charset=utf-8"> test
views.py
def index(request):
posts = Post.objects.all()
if request.method == 'POST':
form = NewPostForm(request.POST, request.FILES)
if form.is_valid():
new_post = form.save(commit=False)
new_post.user = user
new_post.save()
return redirect('index')
else:
form = NewPostForm(instance=None)
context = {
'form': form,
'posts': posts
}
return render(request, 'index.html', context=context)
也许用户没有被正确序列化,但是当我从数据属性中删除它时(这意味着应该将当前用户分配给 Post 对象),我得到了基本相同的结果。
【问题讨论】:
标签: python django django-testing