猿问

在 python unittest 中,保存 Peewee 对象的实例会引发

当我在 python unittest 的 setUp 中保存一个实例时,我弹出了 2 个错误:


sqlite3.IntegrityError:NOT NULL约束失败: registro_c170.reg_c100_id



peewee.OperationalError:连接已打开。(这是为我的测试类中的每个 test_method 引发的。)


语境:


我对面向对象的编程和单元测试非常陌生。我正在使用python构建寄存器层次结构的模型。该注册簿包含有关税收和问责制的信息。


模型:


from peewee import *


db = SqliteDatabase('pis_cofins.db')


class BaseModel(Model):


    class Meta:

        database = db


class Registro_C100(BaseModel):

    """

    """

    # Atributos

    x = CharField()

    y = CharField()



    @property

    def dados(self):

        # some property


    @dados.setter

    def dados(self, novos_dados):

        #...



    @property

    def formato_linha(self):

        # some method


class Registro_C170(BaseModel):

    """

    """

    # Atributos

    a = CharField()

    b = CharField()


    reg_c100 = ForeignKeyField(Registro_C100, backref='registros_c170')


    @property

    def dados(self):

        # some property


    @dados.setter

    def dados(self, novos_dados):

        # ...


    @property

    def formato_linha(self):

        # some method

老实说,我知道我唯一可以尝试的是在每个测试方法中创建每个实例,但这正是我想要避免的。

我搜索了“peewee testing”和“peewee unittest”,但没有找到任何有用的东西。Peewee文档只有你展示了如何写的安装和拆卸方法: http://docs.peewee-orm.com/en/latest/peewee/database.html#testing-peewee-applications 或如何使用他们的test_utils: HTTP: //docs.peewee-orm.com/en/latest/peewee/playhouse.html#test-utils


明月笑刀无情
浏览 183回答 1
1回答

慕森卡

好吧,这很尴尬。我意识到我正在保存一个没有值的实例ForeignKeyField(默认为null=False)。我需要做的就是允许该字段接受null值(null=True)。
随时随地看视频慕课网APP

相关分类

Python
我要回答