我正在编写一个简单的单元测试方法,该方法在接收POST后测试视图是否重定向。我可以测试预期的URL匹配响应对象而不是内容。
当前的劣质代码:
def test_example_view_redirects_to_home_after_post(self):
client = Client()
response = client.post('/example/')
# Test location
self.assertEqual(response.get('location'), "http://testserver/")
# Test page content
expected_template = render_to_string('home.html')
self.assertEqual(response.content, expected_template)
测试失败:
AssertionError: b'' != '<html> etc etc...
在此阶段,视图代码可以非常简单:
def example(request):
if request.method == "POST":
return HttpResponseRedirect('/')
else:
return render(request, 'example.html')
我是TDD的新手,只是想知道为什么这样做不像我预期的那样。
感谢。
答案 0 :(得分:2)
您可以在entries
中使用follow=True
,它会在重定向到下一页后模拟浏览器。 ILSpy。这样您就可以使用client.post
测试第二页的内容。
您可以使用assertContains
来测试重定向是否正确发生。检查出See here in the docs。