繁体   English   中英

如何使用Python的unittest正确比较两个SQLAlchemy Column对象?

[英]How do you compare two SQLAlchemy Column objects correctly with Python's unittest?

我写了一个单元测试,它应该比较从我的方法返回的Column对象。 我在测试中创建一个,然后从我的班级中获得一个。 我的测试代码如下所示:

def test_getting_correct_sa_object_from_column(self):
    table = self.database.get_table_by_name('ESEventlogMain')
    column = table.get_column_by_name('eventdata')
    sa_column = sqlalchemy.Column('eventdata', sqlalchemy.Integer, primary_key=False)

    self.assertEqual(sa_column, column.get_sa_object())

我班级的方法就是这样:

def get_sa_object(self):
    if self.type == 'int':
        sa_type = sqlalchemy.Integer
    elif self.type == 'varchar':
        sa_type = sqlalchemy.String(self.length)

    return sqlalchemy.Column(self.name, sa_type, primary_key=self.is_primary_key)

当我运行测试时,它输出失败:

Failure
Traceback (most recent call last):
  File "C:\Users\tames.mctigue\PycharmProjects\db_setup_wizard\tests.py", line 107, in test_getting_correct_sa_object_from_column
    self.assertEqual(sa_column, column.get_sa_object())
AssertionError: Column('eventdata', Integer(), table=None) != Column('eventdata', Integer(), table=None)

AssertionError显示的内容看起来像是相同的数据,所以我一直在寻找什么。 除了“assertEqual”之外,我应该使用不同的比较吗?

尝试使用直接列,如:

def test_getting_correct_sa_object_from_column(self):
    table = self.database.get_table_by_name('ESEventlogMain')
    column = table.get_column_by_name('eventdata')
    sa_column = table.eventdata # <- Change this column

    self.assertEqual(sa_column, column.get_sa_object())

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM