测试用例中的"override_settings"不起作用



我在测试用例中使用了"override_settings",我想在测试用例中测试REST_FRAMEWORK DEFAULT_THROTTLE_RATES。当我测试我的 API 时,它不起作用。

my settings.py:
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_RATES': {
'anon': '60/min',
'user': '500/hour',
'custom': '200/day',
}
}
test api:
@throttle_classes([AnonRateThrottle, UserRateThrottle])
def test_api(request):
pass

TestCase:
@override_settings(REST_FRAMEWORK = {
'DEFAULT_THROTTLE_RATES': {
'anon': '600000/min',
'user': '5000000/hour',
'custom': '200000/day',
}
})
def test_api(self):
from rest_framework.settings import api_settings
print(api_settings.DEFAULT_THROTTLE_RATES)
print(api_settings.user_settings)
from rest_framework.throttling import AnonRateThrottle, api_settings as throttling_setting
print(AnonRateThrottle().get_rate())
print(id(throttling_setting))
print(id(api_settings))
print(id(AnonRateThrottle().THROTTLE_RATES))
print(id(api_settings.DEFAULT_THROTTLE_RATES))
print(id(throttling_setting.DEFAULT_THROTTLE_RATES))
url = 'api'
for i in range(100000):
response = self.client.get(url)
self.assertEqual(response.status_code, 200)

我希望测试用例正常工作,但它在 429 状态下断言。 我打印了"apiset","DEFAULT_THROTTLE_RATES"的id,这是相同的,但是"AnonRateThrottle"实例中的"THROTTLE_RATES"id不一样,值也不相同。值为"{'匿名': '60/分钟', '用户' : '500/小时', '自定义': '200/天',}"。请帮助我,我快疯了。

drf 的节流由缓存工作。我在每个请求中清除缓存以使其工作。

相关内容

  • 没有找到相关文章

最新更新