gpt4 book ai didi

Django 单元测试;具有多个值的 POST 复选框

转载 作者:行者123 更新时间:2023-12-04 04:45:33 24 4
gpt4 key购买 nike

我正在尝试在具有多个复选框的表单上运行单元测试,但无法弄清楚如何发送 POST 数据。我能找到的最相似的问题是 here .但是如何将 url 编码的部分与其他表单数据一起嵌入到 POST 中?

如果我做这样的事情,我的测试会出错并说 classes = request.POST.getlist('class_choices')
AttributeError: 'dict' 对象没有属性 'getlist':

    request = HttpRequest()
request.method = 'POST'
request.POST['fname'] = 'A'
request.POST['lname'] = 'Student'
request.POST['email'] = 'me@name.com'
request.POST['class_choices'] = urllib.urlencode({
'class_choices': ['1', '2'],
}, True)
request.POST['passwd'] = 'password'
request.POST['conpasswd'] = 'password'
response = success(request)
self.assertIn('My Browser', response.content.decode())

但是如果我这样做,我会在 fname = request.POST['fname'] 上得到一个错误
类型错误:字符串索引必须是整数,而不是 str
    request.POST = urllib.urlencode({
'class_choices': ['1', '2'],
'fname': 'A',
'lname': 'Student',
'email': 'me@name.com',
'passwd': 'password',
'conpasswd': 'password'
}, True)
response = success(request)

最佳答案

因此,在尝试了其他几件事之后,我基本上会说我的问题在“技术上”没有答案......我找不到任何方法来使用 HttpRequest 创建复选框类型的 POST 参数。但是,如 Hieu Nguyen 建议的那样,使用 Django 测试客户端以“正确”的方式进行操作确实可以实现该功能。您只需将多个选项封装在括号中,如:

    response = c.post('/success/',{
'fname': 'A',
'lname': 'Student',
'email': 'me@name.com',
'passwd': 'password',
'conpasswd': 'password',
'class_choices': ('1','2'),
})

关于Django 单元测试;具有多个值的 POST 复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18238422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com