django测试客户端不会调用POST,而是GET

时间:2015-02-03 21:33:04

标签: django django-tests

我尝试通过POST测试视图调用。我使用 follow = True 。但测试客户端使用GET方法,我的POST数据不会传递。

这是我的观点:

def aaa(request):
    n = request.method
    d = request.POST
    template = 'shop/test.html'
    return render(request, template, d)

这是我的测试:

from django.utils import unittest
from django.test.client import Client

def test_add_to_cart_page(self):
    response = self.client.post('/aaa/', {'product': 11}, follow=True)
    self.assertEqual(response.status_code, 200)

调用视图时。它不是POST,但是使用了GET,我的POST参数当然是空的。有人可以说为什么会这样吗?

修改 我用新鲜的Django做了一个干净的venv。并且它按预期工作(调用POST)看起来在丹麦的州有一些腐烂的东西。

2 个答案:

答案 0 :(得分:1)

follow=True

表示客户端遵循重定向。

response = self.client.post('/aaa/', {'product': 11}, follow=True)

表示响应包含后面的响应内容。你的测试没有错;它必须是一个POST。


奇怪的是你的视图没有重定向到任何东西所以我不明白为什么你使用follow = True。另外我不明白为什么你认为帖子不起作用。你考试的结果是什么?

答案 1 :(得分:0)

经过调查,我意识到使用PREPEND_WWW会破坏测试客户端的帖子请求。