我在测试用例中使用了“ 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状态。 我打印的ID是“ apisetting”,“ DEFAULT_THROTTLE_RATES”,这是相同的,但是“ AnonRateThrottle”实例中的“ THROTTLE_RATES” ID是不同的,值也不相同。值是“ {'anon':'60 / min','user':'500 / hour','custom':'200 / day',}”。请帮助我,我快疯了。
答案 0 :(得分:0)
drf的节流由缓存处理。我会清除所有使它起作用的请求的缓存。