Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django单元测试中“model_bakery”生成的意外模型_Django_Unit Testing_Model Mommy - Fatal编程技术网

Django单元测试中“model_bakery”生成的意外模型

Django单元测试中“model_bakery”生成的意外模型,django,unit-testing,model-mommy,Django,Unit Testing,Model Mommy,我用了相当多的model\u面包店(在那之前,model\u妈咪),所以这个bug让我觉得我在吃疯狂的药丸 from model_bakery import baker # BaseTestCase inherits from django.test.TestCase # it creates a tenant object assigned to self.tenant in BaseTestCase.setUp class TestSchemas(BaseTestCase): de

我用了相当多的
model\u面包店
(在那之前,
model\u妈咪
),所以这个bug让我觉得我在吃疯狂的药丸

from model_bakery import baker

# BaseTestCase inherits from django.test.TestCase
# it creates a tenant object assigned to self.tenant in BaseTestCase.setUp
class TestSchemas(BaseTestCase):
    def setUp(self):
        super().setUp()
        self.assertEqual(Tenant.objects.count(), 1, "This one passes")
        self.assertTrue(
           Tenant.objects.filter(pk=self.tenant.pk).exists,
           "The only tenant I expect is here, persisted, and correct."
        )
        self.schema = baker.make(
            "Schema",
            tenant=self.tenant,
        )
       self.assertEqual(self.schema.tenant, self.tenant, "This also does not fail...")
       # This is the failing assert
       self.assertEqual(
           Tenant.objects.count(), 1, "This case fails. I _expect_ no additional Tenant objects to have been created."
       )
如断言消息所示,
setUp
方法以一个
Tenant
对象开始我的预期。我使用
baker
创建一个
Schema
。我希望模式使用现有的
租户
,但它似乎正在创建第二个租户,正如最后的断言所示
AssertionError:2!=1


我已经把这件事简化到最低限度,但我很难理解到底发生了什么。模型上没有任何被重写的方法,
BaseTestCase
没有做任何特殊的事情。。。下一步我可以尝试什么?

我自己无法复制这一个(成功地通过了失败的断言),可能您已经在github上共享了项目?
from django.db import models


class Tenant(models.Model):
    tenant_xid = models.BigIntegerField("Tenant ID", primary_key=True)


class Schema(models.Model):
    form_schema_xid = models.BigIntegerField("schema ID", primary_key=True)

    tenant = models.ForeignKey(
        Tenant, models.CASCADE, db_column="tenant_xid", related_name="schemas"
    )