使用Django TestClient中的默认值发回表单

时间:2011-09-18 15:43:14

标签: python django django-forms django-testing

我正在为Django中的某些表单编写一些测试。这些表单经常发生变化,所以我试图避免将表单参数硬编码到我的测试中,因为每次我的表单都会改变时,我也必须修改测试。我有很多这种性质的形式。我主要测试信息是否正确存储在正确的表中,而不必真正打扰每个表单字段。

使用Django TestClient,有没有办法可以使用表单获取页面,然后使用归档的默认表单字段值将其发回?

我为此搜索过但无济于事。

你帮帮忙吗?感谢。

1 个答案:

答案 0 :(得分:1)

之前我必须做这样的事情,不幸的是,没有简单的方法可以做到这一点。我能想到的最好的方法是渲染表单,然后使用BeautifulSoup解析结果以获取输入和选择的所有值。类似的东西:

from BeautifulSoup import BeautifulSoup
myform = MyForm()
rendered_form = myform.as_p()
soup = BeautifulSoup(rendered_form)
values = {}
for input in soup.findAll('input'):
    value = input.get('value')
    if value:
        values[input['name']] = value
for select in soup.findAll('select'):
    selected = select.find(selected='selected')
    if selected:
        values[select['name']] = selected['value']