gpt4 book ai didi

python - 如何保持 Django 测试客户端中 POST 参数的顺序?

转载 作者:太空宇宙 更新时间:2023-11-04 04:57:47 26 4
gpt4 key购买 nike

我正在为 Django View 编写单元测试,我的单元测试中有这个:

data_from_paypal_other_id = {'client_id': '1', 'receiver_email': 'badguy@example.com', '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"

badguy@example.com
--BoUnDaRyStRiNg
Content-Disposition: form-data; name="amount"

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

1
--BoUnDaRyStRiNg--

注意 receiver_emailclient_id 之前跳转。

我的问题是如何强制 Django 测试客户端保持参数的顺序?

最佳答案

使用 collections.OrderedDict而不是 dict 应该可以解决问题。确保使用序列而不是原始字典对其进行初始化,例如:

from collections import OrderedDict

data_from_paypal_other_id = OrderedDict([
('client_id', '1'), ('receiver_email', 'badguy@example.com'),
('amount', '1.5')])

关于python - 如何保持 Django 测试客户端中 POST 参数的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46646075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com