如何在Django中编写考虑自定义用户模型的测试?

时间:2014-03-01 11:15:18

标签: python django django-users django-unittest

TL; DR:

我不想使用@skipIfCustomUser 我该怎么办?


Django允许在settings.py中定义自定义用户模型,并说我们应该使用get_user_model()来引用当前(交换的)User模型in the docs。< / p>

Forthermore,the docs很友善地说:

  

如果您正在编写与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字段,则最后一行将失败。来自Django's own testsCustomUser示例就是这种情况。

0 个答案:

没有答案