带有假用户的 Django 测试模型
Django test model with fake user
我有一个要测试的 Django 模型。该模型包含一个 'user' 字段。有没有办法创建一个临时用户用于测试目的?
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)
好吧 User
实际上 只是 另一个 Django 模型(当然它在 Django 中有一些额外的绑定,这使得它成为 "popular" 和 "special" 模型,但它具有相同的接口,您可以像其他模型一样构造实例)。所以您可以导入该模型,并创建一个 User
.
例如:
from django.contrib.auth.models import <b>User</b>
my_user = User.objects.create(username='Testuser')
通常在测试中,人们会使用 工厂 (例如使用 Factory Boy)来使使用某些数据构建对象变得容易。例如:
import factory
from factory.django import <b>DjangoModelFactory</b>
class <b>UserFactory</b>(DjangoModelFactory):
username = factory.Sequence('testuser{}'.format)
email = factory.Sequence('testuser{}@company.com'.format)
class Meta:
model = User
然后您可以创建一个用户:
my_user2 = UserFactory()
my_user3 = UserFactory(username='alice')
my_user4 = UserFactory(username='bob', email='bob@work.com')
我有一个要测试的 Django 模型。该模型包含一个 'user' 字段。有没有办法创建一个临时用户用于测试目的?
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)
好吧 User
实际上 只是 另一个 Django 模型(当然它在 Django 中有一些额外的绑定,这使得它成为 "popular" 和 "special" 模型,但它具有相同的接口,您可以像其他模型一样构造实例)。所以您可以导入该模型,并创建一个 User
.
例如:
from django.contrib.auth.models import <b>User</b>
my_user = User.objects.create(username='Testuser')
通常在测试中,人们会使用 工厂 (例如使用 Factory Boy)来使使用某些数据构建对象变得容易。例如:
import factory
from factory.django import <b>DjangoModelFactory</b>
class <b>UserFactory</b>(DjangoModelFactory):
username = factory.Sequence('testuser{}'.format)
email = factory.Sequence('testuser{}@company.com'.format)
class Meta:
model = User
然后您可以创建一个用户:
my_user2 = UserFactory()
my_user3 = UserFactory(username='alice')
my_user4 = UserFactory(username='bob', email='bob@work.com')