【问题标题】:Django Test Client POST not sending dataDjango 测试客户端 POST 不发送数据
【发布时间】:2018-02-07 19:49:50
【问题描述】:

我正在使用 Django 1.11、Python 3.6 和 Visual Studio,我正在尝试运行我的单元测试,但在测试处理表单的视图方法时遇到了一些问题。

这是我的测试:

def test_post_newComment(self):
    # Login
    self.client.login(username="user1", password="user1")

    # Data form
    data = {'title': 'Test', 'queja':2}

    # Response to post client request
    response = self.client.post(reverse('newComment'), data)

    # Check response
    self.assertTrue(isinstance(response, HttpResponseRedirect))
    self.assertEqual(response.status_code, 302)
    ....

这是我的 Views.py 方法,在调试中我可以看到 request.POST 是一个空字典,因此表单永远不会填写在 self.client.post 中。

@login_required(login_url='/login/')
def nuevoComentario(request):
    assert isinstance(request, HttpRequest)

    # User validation
    if not (request.user.is_authenticated):
    return HttpResponseRedirect('/login/')

    # If the forms has been submitted
    if (request.method == 'POST'):
        form = NewCommentForm(request.POST)
        if (form.is_valid()):
            ...

request.POST 总是一个空字典。我曾尝试将“content_type”参数添加到 self.client.post 请求,但我也获得了相同的结果(request.POST 到达 views.py 方法为空)。

【问题讨论】:

  • 嗨@ÁlvaroSL。你解决了这个问题吗?我想我现在也一样......

标签: python django visual-studio unit-testing django-views


【解决方案1】:

看起来你缺少的是client.post中的data=data

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-24
    • 2012-01-24
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    相关资源
    最近更新 更多