django - 更改Django身份验证后端以进行测试

标签 django unit-testing ldap

我的Django站点使用LDAP后端在生产中进行身份验证,但这不适合测试(无法创建来自虚拟用户的请求)。如何仅针对测试禁用此后端?

这是相关的settings.py部分:

    AUTHENTICATION_BACKENDS = (
#'crowd.backend.CrowdBackend',
# 'django_auth_ldap.backend.LDAPBackend',
'django.contrib.auth.backends.ModelBackend',
    )
   AUTH_LDAP_SERVER_URI = "ldap://ldap.cablelabs.com"
   import ldap
   from django_auth_ldap.config import LDAPSearch

   AUTH_LDAP_BIND_DN = "CN=CableLabs  Internal,OU=cabletest,OU=Teamwork,OU=community,DC=cablelabs,DC=com"
   AUTH_LDAP_BIND_PASSWORD = "UAq,0@ki"
   AUTH_LDAP_USER_SEARCH = LDAPSearch("ou=community,dc=cablelabs,dc=com",ldap.SCOPE_SUBTREE, "(sAMAccountName=%(user)s)")
   AUTH_LDAP_USER_ATTR_MAP = {"first_name": "givenName", "last_name": "sn","username":"sAMAccountName","email":"mail","photo":"thumbnailPhoto"} 
   AUTH_LDAP_CONNECTION_OPTIONS = {
     ldap.OPT_REFERRALS: 0
   }

最佳答案

创建一个备用设置文件,例如myproj/test_settings.py,并在运行单元测试时指定该设置文件。

像这样编写备用设置文件:

from myproj.settings import *

AUTHENTICATION_BACKENDS = (
        #'your.ldap.backend',
        'django.contrib.auth.backends.ModelBackend',
        )

也就是说,这些设置继承了常规设置中的所有内容,但是会覆盖AUTHENTICATION_BACKENDS定义,并注释掉LDAP后端。

然后,像这样运行测试:
python manage.py test --settings=myproj.test_settings

关于django - 更改Django身份验证后端以进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17497197/

相关文章:

unit-testing - 没有字符串的单元测试 MVC3 Razor 助手/ View

JAVA LDAP - 所有数据检索

java - 如何使用 UnboundID LDAP SDK 连接到本地主机?

python - django-storages boto3 访问私有(private)文件的文件 url

javascript - 使用 Jest 测试 Firebase 实时数据库

python - 在开发过程中使用 Django、South 和 Sqlite

java - 让 PowerMockito 模拟接口(interface)上的静态方法?

使用 JBoss <安全域> 的 Spring Security

python - 在管理中用总和显示数据进行多重注释 - Django

python - Django,保存模型窗体