作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 django-social-auth 作为我的身份验证机制,我需要使用登录用户测试我的应用程序。我正在尝试:
from django.test import Client
c = Client()
c.login(username='myfacebook@username.com", password='myfacebookpassword')
尝试登录的用户已成功从浏览器登录。该应用已被允许访问用户的数据。
使用 django-social-auth 作为身份验证机制时,有什么想法如何从单元测试登录吗?
谢谢
最佳答案
使用用户实例创建夹具
{
"pk": 15,
"model": "auth.user",
"fields": {
"username": "user",
"first_name": "user",
"last_name": "userov",
"is_active": true,
"is_superuser": false,
"is_staff": false,
"last_login": "2012-07-20 15:37:03",
"groups": [],
"user_permissions": [],
"password": "!",
"email": "",
"date_joined": "2012-07-18 13:29:53"
}
}
使用这样的 SocialAuthUser 实例创建一个固定装置
{
"pk": 7,
"model": "social_auth.usersocialauth",
"fields": {
"uid": "1234567",
"extra_data": "%some account social data%",
"user": 15,
"provider": "linkedin"
}
}
因此,您将获得与真实用户具有相同行为并拥有您需要的所有社交数据的用户。设置新密码,然后就可以使用auth机制来登录该用户:
...
user.set_password('password')
user.save()
logged_in = self.client.login(username='user', password='password')
然后只需登录即可调用 View
self.client.get("some/url")
不要忘记,需要 django.contrib.auth.backends.ModelBackend
,并且 django.contrib.sessions
应该位于您的 INTALLED_APPS 元组中
此外,使用标准身份验证的优点是您不需要发出服务器请求来获取 oauth token 等。
关于django-social-auth : logging in from a unit test client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459707/
我是一名优秀的程序员,十分优秀!