Hum*_*rey 45 python django unit-testing http-authentication django-testing
对于我的一些Django视图,我创建了一个执行基本HTTP访问身份验证的装饰器.但是,在Django中编写测试用例时,我花了一些时间来研究如何对视图进行身份验证.这就是我做到的.我希望有人觉得这很有用.
Hum*_*rey 68
我是这样做的:
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)
Run Code Online (Sandbox Code Playgroud)
注意:您还需要创建用户.
Rya*_*ski 29
在您的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
Run Code Online (Sandbox Code Playgroud)
对于 python3,您可以对username:password字符串进行 base64 编码:
base64.b64encode(b'username:password')
Run Code Online (Sandbox Code Playgroud)
这将返回字节,因此您需要将其转换为 ASCII 字符串.decode('ascii'):
完整示例:
import base64
from django.test import TestCase
class TestClass(TestCase):
def test_authorized(self):
headers = {
'HTTP_AUTHORIZATION': 'Basic ' +
base64.b64encode(b'username:password').decode("ascii")
}
response = self.client.get('/', **headers)
self.assertEqual(response.status_code, 200)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14829 次 |
| 最近记录: |