WebApp2の下で同じ名前を持つ複数のチェックボックスのリクエストをユニットテストする方法

StackOverflow https://stackoverflow.com/questions/7313124

質問

WebApp2を使用して、投票のチェックボックスがあるフォームのユニットテストを作成します。 vote フィールドとそれらは介して取得されます request.POST.getall('vote'):

<input type="checkbox" name="vote" value="Better">
<input type="checkbox" name="vote" value="Faster">
<input type="checkbox" name="vote" value="Stronger">

ユニットテストでは、リストを渡しました。

response = app.get_response('/vote',
  POST={'vote': [u'Better', u'Faster', u'Stronger']},
  headers=[('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8')]
)

しかし、それは単に文字列に変換されているように見えます:

votes = self.request.POST.getall('vote')
# => [u"[u'Better', u'Faster', u'Stronger']"]

複数の値を渡すにはどうすればよいですか vote それはリストとしてリストとして取得されます request.POST.getall()?

役に立ちましたか?

解決

投稿データはクエリ文字列エンコードを使用してエンコードされ、同じ名前で複数のアイテムが異なる値でキーを繰り返すことで表されます。例えば:

vote=Better&vote=Faster&vote=Stronger

Pythonには、これを行うライブラリ機能があります。

urllib.urlencode({
  'vote': ['Better', 'Faster', 'Stronger'],
}, True)

2番目の引数(True) に urlencode 「doseq」と呼ばれ、urlencodeに別々の要素のリストとしてシーケンスをエンコードするように指示します。

他のヒント

Webtestライブラリは、これらのテストケースに役立ちます。

http://webtest.pythonpaste.org/en/latest/index.html#form-submissions

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top