2017-10-09 16 views
1

私は、Djangoのビューのためのユニットテストを書いていますし、私は私のユニットテストでこれを持っている:DjangoテストクライアントのPOSTパラメータの順序を維持するには?

data_from_paypal_other_id = {'client_id': '1', 'receiver_email': '[email protected]', 'amount': '1.5'} 
self.client.post(reverse('paypal_ipn_listener'), data=data_from_paypal_other_id) 

問題は、PayPalが特定の順序でパラメータを持つPOSTリクエストを送信するために私を必要としています。 Don't ask me why, see this

私が台無しに順番にパラメータを参照してくださいDjangoのテストクライアント:

--BoUnDaRyStRiNg 
Content-Disposition: form-data; name="receiver_email" 

[email protected] 
--BoUnDaRyStRiNg 
Content-Disposition: form-data; name="amount" 

1.5 
--BoUnDaRyStRiNg 
Content-Disposition: form-data; name="client_id" 

1 
--BoUnDaRyStRiNg-- 

receiver_emailclient_id前に飛び込んだということに。

私の質問は、Djangoテストクライアントに引数の順序を保持させるにはどうすればいいですか?

+1

OderdedDict https://docs.python.org/2/library/collections.html#collections.OrderedDictを使用してみてください – neverwalkaloner

答えて

1

dictの代わりにcollections.OrderedDictを使用すると、このトリックを行う必要があります。あなたはシーケンスとないオリジナルの辞書、例えばで初期化していることを確認してください:

from collections import OrderedDict 

data_from_paypal_other_id = OrderedDict([ 
    ('client_id', '1'), ('receiver_email', '[email protected]'), 
    ('amount', '1.5')]) 
関連する問題