【发布时间】:2019-03-11 16:01:24
【问题描述】:
就像标题一样,我不知道如何测试响应是否是带有或不带有表单的视图,因为在我看来,用户只有在 request.user.is_authenticated 时才能获取表单。
##views.py
def product_detail(request, id, slug):
product = get_object_or_404(Product, id=id, slug=slug,)
comments = product.comments.all()
if request.user.is_authenticated:
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
new_comment = form.save(commit=False)
new_comment.product = product
new_comment.nick = get_object_or_404(User, id=str(request.user.id))
form.save()
return redirect('product_detail', id=product.id, slug=product.slug)
else:
form = CommentForm()
return render(request, 'shop/product/Product_detail.html',
{'product': product, 'form': form, 'comments': comments})
else:
return render(request, 'shop/product/Product_detail.html',
{'product': product, 'comments': comments})
我有视图测试来检查视图是否加载,但经过身份验证和未经过身份验证的用户都可以访问此视图,唯一的区别是未经身份验证的用户正在获取没有表单的视图,我不知道如何测试。
##test_views.py
def test_call_view_loads(self):
product = Product.objects.get(id=1)
response = self.client.get(f'/shop/{product.id}/{product.slug}/')
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'shop/product/Product_detail.html')
【问题讨论】:
标签: python django unit-testing