【问题标题】:Can I add non existing field to form with WebTest?我可以添加不存在的字段以使用 WebTest 形成吗?
【发布时间】:2014-03-28 09:15:46
【问题描述】:

我正在使用 WebTest 测试表单。但是,有些字段是使用 JS 动态创建的,因此这些字段不在 Form 中。当我尝试设置以下字段之一时出现错误:

>>> resp.form['new_field'] = '值' 或者 >>> resp.form.set('new_field', 'value') 或者 >>> resp.form.set('new_field', 'value', index=0) 或者 >>> resp.form['new_field'].force_value('value') *** AssertionError:找不到名为“new_field”的字段

有没有办法创建一个字段?

【问题讨论】:

    标签: django webtest django-webtest


    【解决方案1】:

    您需要将新字段添加到 fields 和 field_order:

    from webtest.forms import Text
    def add_dynamic_field(form, name, value):
        """Add an extra text field to a form. More work required to support files"""
        field = Text(form, 'input', None, None, value)
        form.fields[name] = [field]
        form.field_order.append((name, field))
    
    add_dynamic_field(resp.form, 'newfield', 'some value')
    

    【讨论】:

    • form.fields 现在将值存储为 list
    【解决方案2】:

    更新了@lambackk 代码以处理文件字段。

    from webtest.forms import Text, File
    from webtest import Upload
    
    
    def add_dynamic_field(form, name, value):
        field_cls = File if isinstance(value, Upload) else Text
        field = field_cls(form, 'input', None, 999, value)
        form.fields[name] = [field]
        form.field_order.append((name, field))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2020-01-02
      相关资源
      最近更新 更多