如何在pylons(paste)webtest中使用同名的多个复选框?

5 投票
1 回答
872 浏览
提问于 2025-04-16 01:51

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

<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>

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

1 个回答

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

我从来没有用WebTest来提交实际的表单,不过看看Form类的源代码,你可以设置你想要修改的字段的索引,这样可以避免混淆。我没有测试过,但类似的做法可能是可行的:

form = response.form
form.set('color', True, 0)
form.set('color', True, 2)

撰写回答