TL;博士:
我不想使用@skipIfCustomUser
我能做什么?
Django 允许在 中定义自定义用户模型settings.py
,并说我们应该在 docsget_user_model()
中引用当前(交换的)User
模型。
此外,文档很高兴地说:
如果您正在编写与 User 模型交互的应用程序,则必须采取一些预防措施......
为确保您的测试套件将通过任何项目配置,请
django.contrib.auth.tests.utils
定义一个@skipIfCustomUser
装饰器。这个装饰器会导致一个测试用例被跳过......
对我来说,期望越来越多的 Django 项目拥有自定义用户模型似乎是合理的,因此我也希望能够针对这些项目测试我的应用程序。
但我该怎么做呢?
作为参考,这一切都失败了:
def setUp(self):
from django.contrib.auth import get_user_model
User = get_user_model()
user = User.objects.create_user(
'test_username',
'test_username@example.com',
'da_password') # BAM!
如果用户模型未定义username
字段,则最后一行将失败。CustomUser
例如Django 自己的测试就是这种情况。