I've just started using mixer with Django. My easiest test case fails because mixer isn't generating a value for a not null column.
I started my project with cookiecutter: cookiecutter http://ift.tt/1lH6sVc Then I startapp orders
users/models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, absolute_import
from django.contrib.auth.models import AbstractUser
from django.core.urlresolvers import reverse
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
@python_2_unicode_compatible
class User(AbstractUser):
# First Name and Last Name do not cover name patterns
# around the globe.
name = models.CharField(_('Name of User'), blank=True, max_length=255)
email = models.EmailField(_("email address"), unique=True)
first_name = models.CharField(_("first name"), max_length=50)
last_name = models.CharField(_("last name"), max_length=50)
preferred_name = models.CharField(_("preferred name"), max_length=50, default="", blank=True)
institution = models.CharField(_("institution"), default=None, max_length=200)
group_lead = models.CharField(_("group leader"), default=None, max_length=200)
account_number = models.CharField(_("account #"), default="", max_length=50, blank=True)
address_street = models.CharField(_("street address"), default="", max_length=200, blank=True)
address_street2 = models.CharField(_("street address cont..."), default="", max_length=200, blank=True)
address_city = models.CharField(_("city"), default="", max_length=60, blank=True)
address_zip = models.CharField(_("zip code"), max_length=5, default="", blank=True)
address_country = models.CharField(_("country"), max_length=5, default="US", blank=True)
def __str__(self):
return self.username
def get_absolute_url(self):
return reverse('users:detail', kwargs={'username': self.username})
orders/models.py
class Order(DirtyFieldsMixin, models.Model):
name = models.CharField(max_length=255)
made_by = models.ForeignKey(settings.AUTH_USER_MODEL, models.PROTECT)
status = models.ForeignKey('OrderStatus', models.PROTECT)
date_accepted = models.DateField(blank=True, null=True)
date_started = models.DateField(blank=True, null=True)
date_completed = models.DateField(blank=True, null=True)
needs_attention = models.BooleanField(blank=True, default=False)
orders/tests/test_models.py
from mixer.backend.django import mixer
from tests.orders.models import Order
order = mixer.blend(Order)
Running python manage.py test results in error:
Traceback (most recent call last): File "/var/www/test/test/test/users/tests/test_views.py", line 41, in setUp
super(TestUserUpdateView, self).setUp() File "/var/www/test/test/test/users/tests/test_views.py", line 14, in setUp
self.user = self.make_user() File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/test_plus/test.py", line 275, in make_user
password, File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/contrib/auth/models.py", line 157, in create_user
return self._create_user(username, email, password, **extra_fields) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/contrib/auth/models.py", line 151, in _create_user
user.save(using=self._db) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/contrib/auth/base_user.py", line 80, in save
super(AbstractBaseUser, self).save(*args, **kwargs) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/models/base.py", line 796, in save
force_update=force_update, update_fields=update_fields) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/models/base.py", line 824, in save_base
updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/models/base.py", line 908, in _save_table
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/models/base.py", line 947, in _do_insert
using=using, raw=raw) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/models/query.py", line 1045, in _insert
return query.get_compiler(using=using).execute_sql(return_id) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1054, in execute_sql
cursor.execute(sql, params) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb) File "/home/vagrant/.virtualenvs/test/lib/python3.5/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params) django.db.utils.IntegrityError: null value in column "group_lead" violates not-null constraint DETAIL: Failing row contains (15, pbkdf2_sha256$30000$CXwqevjMeBHt$8dYvI1PQEwzc5TwAGe5Mgq2oVeqqzxC..., null, f, testuser, , , testuser@example.com, f, t, 2017-02-18 02:50:46.889259+00, , , , US, , , , null, null, ).
Aucun commentaire:
Enregistrer un commentaire