我基本上想打開TokenAuthentication,但僅用於2個單元測試。我目前看到的唯一選擇是使用@override_settings(...)
替換REST_FRAMEWORK設置值。運行時單元測試Django Rest框架身份驗證
REST_FRAMEWORK_OVERRIDE={
'PAGINATE_BY': 20,
'TEST_REQUEST_DEFAULT_FORMAT': 'json',
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
'rest_framework_csv.renderers.CSVRenderer',
),
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
),
}
@override_settings(REST_FRAMEWORK=REST_FRAMEWORK_OVERRIDE)
def test_something(self):
這是行不通的。我可以在修飾器之前和之後打印設置,並看到值已更改,但django似乎並未尊重它們。它允許所有使用測試客戶端或DRF APIClient對象發送的請求無需驗證。當我預計401未經授權時,我收到200條迴應。
如果我在config文件夾的test_settings.py文件中插入相同的字典,一切都按預期工作。然而就像我說過的,我只想打開幾個單元測試的認證,而不是全部。我的想法是,Django在初始化之後永遠不會重新訪問DRF的設置。所以即使設置值是正確的,它們也不會被使用。
有沒有人遇到這個問題,並找到了解決辦法?或解決方法?
使用提供'從rest_framework.settings導入api_settings'審查源代碼會給你一個提示如何覆蓋: https://開頭github.com/tomchristie/django-rest-framework/blob/master/rest_framework/settings.py – petkostas 2015-03-31 11:47:04
我剛剛發現這個問題,https://github.com/tomchristie/django-rest-framework/issues/2466看起來像我的問題可能還沒有解決:/ – 2015-03-31 18:32:21