3

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 自己的测试就是这种情况。

4

0 回答 0