1

Google App Engine で Taskqueue スタブを使用しています。それはとてもいいことですが、私を夢中にさせていることが1つあります。

テスト中に、テストしているメソッドがタスクを作成し、そのタスクが正しく作成されたかどうかを確認したいと考えています。したがって、確認しなければならないことの 1 つは、適切な「パラメーター」が渡されていることです。そのために、次のようにしてタスクを取得します。

tasks = self.taskqueue_stub.GetTasks(queue_name)
self.assertEqual(1, len(tasks))
task = tasks[0]

しかし、このタスクには「params」キーがありません。これは残念なことです。その情報は、すべてが正常であると断言するのに非常に価値があるからです。

代わりに、タスクには 'body' キーがあり、これには base64 でエンコードされたバージョンのリクエスト本文が含まれています (base64 デコード後):

muted=False&class_=Decoder&failures=3&last_orders=Key%28%27ProspectiveSale%27%2C+%27cl1%27%29&last_orderl=Key%28%27ProspectiveSale%27%2C+%27cl2%27%29&hit_per=5.0

「params」dictを取得するためにそれを解析しようとしましたが、すべての異なるアイテムを対応するタイプなどに解析するのは少し面倒だと思います.どういうわけか、それは間違っていると感じています.これを行う方法。

したがって、この質問を回答済みと見なすには、次のいずれかが必要です。

  • 「params」ディクテーションを読み取る方法。
  • 上記の 'body' 値から 'params' dict を再構築する方法。
  • 私が今想像できない別の解決策ですが、それはそのフリキンの「params」辞書を読むことを可能にします;-)

乾杯!

4

1 に答える 1

0

urlparseモジュールには、パラメーター文字列を dict: に変換する関数がありますparse_qs

例えば:

import urlparse

params = 'muted=False&class_=Decoder&failures=3&last_orders=Key%28%27ProspectiveSale%27%2C+%27cl1%27%29&last_orderl=Key%28%27ProspectiveSale%27%2C+%27cl2%27%29&hit_per=5.0'
print urlparse.parse_qs(params)

以下を出力します。

{'muted': ['False'], 'class_': ['Decoder'], 'hit_per': ['5.0'], 'last_orders': ["Key(
'ProspectiveSale', 'cl1')"], 'last_orderl': ["Key('ProspectiveSale', 'cl2')"], 'failu
res': ['3']}
于 2013-04-24T22:15:35.040 に答える