私の Django ビューのいくつかでは、基本的な HTTP アクセス認証を実行するデコレーターを作成しました。しかし、Django でテスト ケースを作成しているときに、ビューに対する認証方法を理解するのに時間がかかりました。これが私がやった方法です。誰かがこれが役立つことを願っています。
22344 次
6 に答える
89
これが私がそれをした方法です:
from django.test import Client
import base64
auth_headers = {
'HTTP_AUTHORIZATION': 'Basic ' + base64.b64encode('username:password'),
}
c = Client()
response = c.get('/my-protected-url/', **auth_headers)
注: ユーザーも作成する必要があります。
于 2011-03-31T04:50:51.353 に答える
34
Django TestCase では、クライアントのデフォルトを更新して、HTTP 基本認証資格情報を含めることができます。
import base64
from django.test import TestCase
class TestMyStuff(TestCase):
def setUp(self):
credentials = base64.b64encode('username:password')
self.client.defaults['HTTP_AUTHORIZATION'] = 'Basic ' + credentials
于 2012-01-31T23:22:02.287 に答える
2
ログイン フォームがあると仮定して、次の手法を使用してテスト フレームワークからログインします。
client = Client()
client.post('/login/', {'username': 'john.smith', 'password': 'secret'})
client
すでに認証されているため、他のテストで持ち歩きます。この投稿に対するあなたの質問は何ですか?
于 2011-03-31T15:34:24.913 に答える
-1
これを行う別の方法は、Django Client() をバイパスし、代わりに Requests を使用することです。
class MyTest(TestCase):
def setUp(self):
AUTH = requests.auth.HTTPBasicAuth("username", "password")
def some_test(self):
resp = requests.get(BASE_URL + 'endpoint/', auth=AUTH)
self.assertEqual(resp.status_code, 200)
于 2014-10-30T15:24:32.170 に答える