5

次のようなフォームがあるとします。

<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 のフォーム ライブラリを使用するにはどうすればよいですか?

4

1 に答える 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)
于 2010-07-26T22:01:52.790 に答える