编程语言
首页 > 编程语言> > python – Django测试客户端提交带有POST请求的表单

python – Django测试客户端提交带有POST请求的表单

作者:互联网

如何使用Django测试客户端提交POST请求,以便在其中包含表单数据?
特别是,我希望有类似的东西(灵感来自How should I write tests for Forms in Django?):

from django.tests import TestCase

class MyTests(TestCase):
    def test_forms(self):
        response = self.client.post("/my/form/", {'something':'something'})

我的端点/ my / form有一些内部逻辑来处理’某事’.
问题是,当试图以后访问request.POST.get(‘something’)时,我无法得到任何东西.
我找到了一个解决方案,所以我在下面分享.

解决方法:

关键是将content_type添加到客户端的post方法,并对数据进行urlencode.

from urllib import urlencode

...

data = urlencode({"something": "something"})
response = self.client.post("/my/form/", data, content_type="application/x-www-form-urlencoded")

希望这有助于某人!

标签:python,django,django-testing
来源: https://codeday.me/bug/20190611/1216848.html