简体   繁体   English

Django工厂进行单元测试:“无法分配” 1”:“ User.group”必须是“ Brand”实例。

[英]Django factories for unit test: “Cannot assign ”'1'“: ”User.group“ must be a ”Brand“ instance.”

I'm getting an error when I run my unit test for my user_profile/model.py: "Cannot assign "'1'": "User.group" must be a "Brand" instance." 当我为user_profile / model.py运行单元测试时出现错误: “无法分配“'1'”:“ User.group”必须是“ Brand”实例。”

I believe this error is because, in my factories for my unit test ( factories.py ), I'm not correctly assigning group when I'm creating an instance of UserFactory() . 我相信这个错误是因为,在我用于单元测试的factories.py (factory.py)中,当我创建UserFactory()的实例时,我没有正确分配 I thing group should map to the Brand class/factory but I'm not sure how to do this.. 我的东西应该映射到Brand类/工厂,但是我不确定该怎么做。

this is my user_profile/model.py : 这是我的user_profile/model.py

class Brand(models.Model):

    name = models.CharField(max_length=20)

    def __unicode__(self):
        return self.name


class User(AbstractBaseUser, PermissionsMixin):

    username = models.CharField(
        'username',
        max_length=50,
        unique=True,
        db_index=True
    )
    email = models.EmailField('email address', unique=True)
    group = models.ForeignKey(Brand, null=True, blank=True)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    is_approved = models.BooleanField(default=True)

and in my user_profile/test/factories.py : 并在我的user_profile/test/factories.py

from user_profile.models import User, Brand

class UserFactory(factory.django.DjangoModelFactory):

    class Meta:

        model = User
        django_get_or_create = (
            'username',
            'email',
            'password',
            'is_approved',
            'is_active',
            'is_staff',
            'is_admin',
            'group'
        )


class BrandFactory(factory.django.DjangoModelFactory):

    class Meta:

        model = Brand
        django_get_or_create = ('name',)

BrandFactory(name='BRAND1')
BrandFactory(name='BRAND2')
BrandFactory(name='BRAND3')
BrandFactory(name='BRAND4')


UserFactory(
    username='myuser1@gmail.com',
    email='myuser1@gmail.com',
    password=12345,
    is_approved=True,
    is_active=True,
    is_staff=True,
    is_admin=True,
    group="1" <--- HOW DO I MAP THIS TO THE 'BRAND1' FACTORY/CLASS?!
)

UserFactory(
    username='myuser2@gmail.com',
    email='myuser2@gmail.com',
    password=12345,
    is_approved=True,
    is_active=True,
    is_staff=True,
    is_admin=True,
    group="2"  <--- HOW DO I MAP THIS TO THE 'BRAND2' FACTORY/CLASS?!
)

You have to assign the return value of BrandFactory to something. 您必须 BrandFactory的返回值分配给某些对象。 For example 例如

b1 = BrandFactory(name='BRAND1')
b2 = BrandFactory(name='BRAND2')

and then you use the reference to the model instance in your constructor 然后在构造函数中使用对模型实例的引用

UserFactory(
    username='myuser1@gmail.com',
    email='myuser1@gmail.com',
    password=12345,
    is_approved=True,
    is_active=True,
    is_staff=True,
    is_admin=True,
    group=b1
)

UserFactory(
    username='myuser2@gmail.com',
    email='myuser12@gmail.com',
    password=12345,
    is_approved=True,
    is_active=True,
    is_staff=True,
    is_admin=True,
    group=b2
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 不能分配必须是一个实例。 姜戈 - Cannot assign must be a instance. Django ValueError:无法分配“ 4749890231992320L”:“ Student.user”必须是“ User”实例。 (Django +自定义模型) - ValueError: Cannot assign “4749890231992320L”: “Student.user” must be a “User” instance. (Django + custom models) 如何修复 Django 中的此错误,“无法分配必须是实例。” - How to fix this error in Django, "Cannot assign must be an instance." 不能分配必须是实例。 Django的 - Can not assign must be a instance. Django 无法分配“&#39;somedata&#39;”:“otherdatal”必须是“”实例。` - Cannot assign "'somedata'": "otherdatal" must be a "" instance.` 无法分配“&#39;”:“”必须是“”实例。 模型选择字段 - Cannot assign "'": "" must be a "" instance. ModelChoiceField 无法分配“1”:“Plugins.category”必须是“PluginsCategory”实例。 Django 和 ForeignKey - Cannot assign “1”: “Plugins.category” must be a “PluginsCategory” instance. Django and ForeignKey Django ProfileListView 的测试失败并出现 ValueError:无法分配“<SimpleLazyObject:....> &quot;: &quot;Profile.user&quot; 必须是 &quot;User&quot; 实例 - Test of Django ProfileListView fails with ValueError: Cannot assign "<SimpleLazyObject:....>": "Profile.user" must be a "User" instance (Django)无法分配“ <Article: > ”:“ Article.user”必须是“ User”实例 - (Django) Cannot assign “<Article: >”: “Article.user” must be a “User” instance (Django)无法分配“u&#39;1”:“StaffProfile.user”必须是“用户”实例 - (Django) Cannot assign “u'1'”: “StaffProfile.user” must be a “User” instance
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM