我了解到使用Customizable Authencation backends philosophy,可以创建一个接受电子邮件地址作为用户名的网站。但在构建相应的逻辑并测试我的代码工作正常后,我发现Django自己的测试用例存在一个问题。他们没有遵循Customizable Authencation后端理念。含义,用于测试“登录”过程的测试用例were actually having hardcoded values('username': 'testclient')。这是为什么? Django总是不鼓励紧耦合。但是这里发生了什么?
我不是以任何方式抨击Django!我是一个忠实的粉丝,我会在未来几年内成为。只是想知道背后的原因!
更新:正如@dmishe指出的那些测试用例应该验证Django自己的功能。我明白。但是,当我运行测试用例或运行整个项目测试套件时,如何让那些“失败的测试用例”错误不显示?
答案 0 :(得分:1)
正如dmishe指出的那样,contrib.auth测试测试contrib.auth应用程序内置的功能并不是问题。默认情况下,这些测试是针对用户项目运行的,并且通过正常的设置自定义很容易打破它们。这是Django开发人员所了解的并且正在研究可能的解决方案的问题。
与此同时,我的解决方案是定义一个简单的bash脚本来仅测试我想要的应用程序。因此,我运行的脚本执行“./manage.py test app1 app2 app3 ...”而不是“./manage.py test”。不完美,但它远非我最严重的问题: - )
更新:This commit可能会让您感兴趣。
答案 1 :(得分:0)
我在这里看不到问题,django.contrib.auth.tests应该测试auth app而已。因此,它应该测试内置的后端,即用户名/密码组合。