在 Django 测试框架中使用基本 HTTP 访问身份验证
对于我的一些 Django 视图,我创建了一个执行基本 HTTP 访问身份验证的装饰器。然而,在 Django 中编写测试用例时,我花了一段时间才弄清楚如何对视图进行身份验证。我是这样做的。我希望有人觉得这很有用。
For some of my Django views I've created a decorator that performs Basic HTTP access authentication. However, while writing test cases in Django, it took me a while to work out how to authenticate to the view. Here's how I did it. I hope somebody finds this useful.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我是这样做的:
注意:您还需要创建一个用户。
Here's how I did it:
Note: You will also need to create a user.
在 Django TestCase 中,您可以更新客户端默认值以包含您的 HTTP 基本身份验证凭据。
In your Django TestCase you can update the client defaults to contain your HTTP basic auth credentials.
对于 python3,您可以对
username:password
字符串进行 Base64 编码:这会返回字节,因此您需要使用
.decode('ascii')
将其转换为 ASCII 字符串:完整示例:
For python3, you can base64-encode your
username:password
string:This returns bytes, so you need to transfer it into an ASCII string with
.decode('ascii')
:Complete example:
假设我有一个登录表单,我使用以下技术通过测试框架登录:
然后我在其他测试中携带客户端,因为它已经过身份验证。您对这篇文章有什么疑问?
Assuming I have a login form, I use the following technique to login through the test framework:
I then carry the
client
around in my other tests since it's already authenticated. What is your question to this post?(python3)我在测试中使用它:
并在视图中使用以下内容:
(python3) I'm using this in a test:
and the following in a view:
另一种方法是绕过 Django Client() 并使用 Requests 代替。
Another way to do it is to bypass the Django Client() and use Requests instead.