問題タブ [django-webtest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
15 参照

django - Django-Webtest のユーザー権限キャッシュ

私のプロジェクトでは、カスタム認証バックエンドを使用してユーザー権限を管理し、認証自体はそのままにしておきます (Django によって処理されます)。バックエンドはそれ自体で正常に動作しますが、Django WebTest を使用して構築されたテストで失敗し始めました。調べてみたところ、原因は DWT による別の認証バックエンドの挿入であることがわかりましたsettings.AUTHENTICATION_BACKENDS

私のバックエンドは Django のものを直接拡張しますがModelBackend、DWT 自身のバックエンドは に基づいていますがRemoteUserBackend、これは最終的には の拡張でもありModelBackendます。DWT はメソッドを定義していませんが、has_permそれでもバックエンドに存在するため、このビットは重要です。

は、テストを実行するときに、問題のユーザー オブジェクトdjango.contrib.auth.backends.ModelBackendget_all_permissions()アクセス許可をキャッシュします。has_perm

DWT のバックエンドが最初にテストされるため、キャッシュにデータが取り込まれ、バックエンドによって設定されたアクセス許可が含まれず、最終的にhas_permテストが失敗します。Django 内からコード スニペットを参照します。

バックエンドで何か間違ったことをしているのですか、それとも DWT の作成者による見落としですか? テスト中にカスタム許可ロジックを使い続けるにはどうすればよいですか?