Python 补丁和对象';使用unittest.mock修补程序的s字段

Python 补丁和对象';使用unittest.mock修补程序的s字段,python,mysql,sqlite,unit-testing,patch,Python,Mysql,Sqlite,Unit Testing,Patch,我有一个目标 class Summary(): __tablename__ = 'employeenames' name= Column('employeeName', String(128, collation='utf8_bin')) date = Column('dateJoined', Date) 我想用模拟对象修补摘要 class Summary(): __tablename__ = 'employeenames' name= Column('

我有一个目标

class Summary():
    __tablename__ = 'employeenames'
    name= Column('employeeName', String(128, collation='utf8_bin'))
    date = Column('dateJoined', Date)
我想用模拟对象修补摘要

class Summary():
    __tablename__ = 'employeenames'
    name= Column('employeeName', String)
    date = Column('dateJoined', Date)
或者只需将名称字段修补到
name=Column('employeeName',String)


我这样做的原因是,我在sqlite中进行测试,一些只针对Mysql的查询干扰了我的测试。

我认为很难模拟这个专栏。但是,您可以使用Sqlite的
字符串
类型,删除排序规则

将sqlalchemy作为sa导入
从sqlalchemy导入orm
从sqlalchemy.ext.compiler导入编译
从sqlalchemy.types导入字符串
@编译(字符串“sqlite”)
def compile_varchar(元素,编译器,**kw):
类型_表达式=kw[“类型_表达式”]
type_expression.type.collation=无
返回编译器。访问_VARCHAR(元素,**kw)
Base=orm.declarative_Base()
课程摘要(基本):
__tablename_uuu='employeenames'
id=sa.Column(sa.Integer,主键=True)
name=sa.Column('employeeName',sa.String(128,collation='utf8_-bin'))
日期=sa.Column('dateJoined',sa.date)
URL=['mysql:///test“,”sqlite://']
对于url中的url:
引擎=sa.创建引擎(url,echo=True,future=True)
Base.metadata.drop_all(引擎)
Base.metadata.create_all(引擎)
此脚本生成MySQL的预期输出:

创建表employeenames(
id整数非空自动增量,
`员工姓名'VARCHAR(128)对照utf8\u-bin,
`日期`日期,
主键(id)
)
但删除了Sqlite的排序规则:

创建表employeenames(
id整数不为空,
“雇员姓名”VARCHAR(128),
“已加入日期”日期,
主键(id)
)