如何使用具有相同名称的多个复选框的pylons(粘贴)webtest?

GDo*_*orn 5 python pylons webtest paste webob

假设我有一个这样的表格:

<form id='myform'>
    Favorite colors?
    <input type='checkbox' name='color' value='Green'>Green
    <input type='checkbox' name='color' value='Blue'>Blue
    <input type='checkbox' name='color' value='Red'>Red
    <input type='submit' value='Submit'>
</form>
Run Code Online (Sandbox Code Playgroud)

如何使用webtest的表单库来测试提交多个值?

Ant*_*air 4

不确定表单库,但您可以使用 MultiDict (在某些情况下您可能必须使用 UnicodeMultiDict,我不确定)。

from webob.multidict import MultiDict

class TestSomeController(TestController):

    def test_something(self):
        params = MultiDict()
        params.add('some_param', '1')
        params.add('color', 'Green')
        params.add('color', 'Blue')
        response = self.app.post(url('something'), params=params)
        assert 'something' in response
Run Code Online (Sandbox Code Playgroud)

我从未使用 WebTest 提交实际的表单,但是,查看 Form 类的源代码,您可以设置要设置的字段的索引以消除歧义。我还没有测试过,但类似的东西可能会起作用:

form = response.form
form.set('color', True, 0)
form.set('color', True, 2)
Run Code Online (Sandbox Code Playgroud)