重定向不工作后测试页面内容

时间:2015-07-23 19:51:40

标签: python django testing

我正在编写一个简单的单元测试方法,该方法在接收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的新手,只是想知道为什么这样做不像我预期的那样。

感谢。

1 个答案:

答案 0 :(得分:2)

  1. 您可以在entries中使用follow=True,它会在重定向到下一页后模拟浏览器。 ILSpy。这样您就可以使用client.post测试第二页的内容。

  2. 您可以使用assertContains来测试重定向是否正确发生。检查出See here in the docs