私は基本的に TokenAuthentication をオンにしたいのですが、2 つの単体テストのみを対象としています。これまでに見た唯一のオプションは@override_settings(...)
、 REST_FRAMEWORK 設定値を置き換えるために使用することです。
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 の応答が返ってきます。
同じ辞書を構成フォルダーの test_settings.py ファイルに挿入すると、すべてが期待どおりに機能します。ただし、私が言ったように、すべてではなく、いくつかの単体テストの認証のみを有効にしたいのです。私の考えでは、Django は初期化後に DRF の設定を再確認することはありません。そのため、設定値が正しい場合でも、それらは使用されません。
誰かがこの問題に遭遇し、解決策を見つけましたか? または回避策?