Django测试模型与假用户

时间:2018-06-12 12:46:48

标签: django django-tests

我有一个我想测试的django模型。该模型包括“用户”字段。有没有办法为测试目的创建临时用户?

tests.py

from django.test import TestCase
from .models import Task
from django.utils import timezone
from .forms import Taskform

# models test
class TaskTest(TestCase):

    def create_task(self, title="Title", description="A description"):
        return Task.objects.create(title=title, pub_date=timezone.datetime.now(), completed=False, description=description, user='user')

    def test_task_creation(self):
        w = self.create_task()
        self.assertTrue(isinstance(t, Task))
        self.assertEqual(t.__unicode__(), t.title)

1 个答案:

答案 0 :(得分:2)

好吧User实际上只是另一个Django模型(当然它在Django中有一些额外的绑定,这使得它成为了#34;受欢迎的"和#34;特殊"模型,但它具有相同的接口,您可以像其他模型一样构造实例)。因此,您可以导入该模型,并创建User

例如:

from django.contrib.auth.models import User

my_user = User.objects.create(username='Testuser')

通常在测试中,使用 factory (例如使用Factory Boy)可以轻松构建包含某些数据的对象。例如:

import factory
from factory.django import DjangoModelFactory

class UserFactory(DjangoModelFactory):

    username = factory.Sequence('testuser{}'.format)
    email = factory.Sequence(lambda a: 'testuser{0}@company.com'.format)

    class Meta:
        model = User

然后,您可以使用以下内容创建用户:

my_user2 = UserFactory()
my_user3 = UserFactory(username='alice')
my_user4 = UserFactory(username='bob', email='bob@work.com')