Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为测试目的创建django allauth常规和社交帐户?_Django_Unit Testing_Django Allauth - Fatal编程技术网

如何为测试目的创建django allauth常规和社交帐户?

如何为测试目的创建django allauth常规和社交帐户?,django,unit-testing,django-allauth,Django,Unit Testing,Django Allauth,当使用登录时,我将使用 我一直在尝试为一个社交账户(Github)做同样的事情,但我真的很挣扎。我想这里一定有人为了测试的目的不得不做一个社会帐户。有人能告诉我他们是怎么做到的吗 此外,如果您知道创建普通用户的更好方法,我们将不胜感激。下面的代码片段演示了如何做到这一点: from allauth.account import app_settings as account_settings from allauth.account.models import EmailAddress from

当使用登录时,我将使用

我一直在尝试为一个社交账户(Github)做同样的事情,但我真的很挣扎。我想这里一定有人为了测试的目的不得不做一个社会帐户。有人能告诉我他们是怎么做到的吗


此外,如果您知道创建普通用户的更好方法,我们将不胜感激。

下面的代码片段演示了如何做到这一点:

from allauth.account import app_settings as account_settings
from allauth.account.models import EmailAddress
from allauth.account.utils import user_email
from allauth.socialaccount.helpers import complete_social_login
from allauth.socialaccount.models import SocialApp, SocialAccount, SocialLogin
from allauth.utils import get_user_model
from django.contrib.auth.models import AnonymousUser
from django.contrib.auth.models import User
from django.contrib.messages.middleware import MessageMiddleware
from django.contrib.sessions.middleware import SessionMiddleware
from django.test import TestCase
from django.test.client import Client
from django.test.client import RequestFactory
from django.test.utils import override_settings


class SocialAccountTests(TestCase):

    @override_settings(
        SOCIALACCOUNT_AUTO_SIGNUP=True,
        ACCOUNT_SIGNUP_FORM_CLASS=None,
        ACCOUNT_EMAIL_VERIFICATION=account_settings.EmailVerificationMethod.NONE  # noqa
    )
    def test_email_address_created(self):
        factory = RequestFactory()
        request = factory.get('/accounts/login/callback/')
        request.user = AnonymousUser()
        SessionMiddleware().process_request(request)
        MessageMiddleware().process_request(request)

        User = get_user_model()
        user = User()
        setattr(user, account_settings.USER_MODEL_USERNAME_FIELD, 'test')
        setattr(user, account_settings.USER_MODEL_EMAIL_FIELD, 'test@test.com')

        account = SocialAccount(user=user, provider='openid', uid='123')
        sociallogin = SocialLogin(account)
        complete_social_login(request, sociallogin)

        user = User.objects.get(
            **{account_settings.USER_MODEL_USERNAME_FIELD: 'test'}
        )
        self.assertTrue(
            SocialAccount.objects.filter(user=user, uid=account.uid).exists()
        )
        self.assertTrue(
            EmailAddress.objects.filter(user=user,
                                        email=user_email(user)).exists()
        )

如果你想从电子邮件中自动生成用户名呢?哇,这太复杂了。