Python 将测试数据库用于Django';使用SQLAlchemy ORM的内置测试
我有一个在Django中运行的项目,并通过sessionmaker连接DoSQLAlchemy ORM,如下所示。它基本上使用指定的API(GET、POST、DELETE)处理http方法,并返回、发布、更新或删除db条目Python 将测试数据库用于Django';使用SQLAlchemy ORM的内置测试,python,mysql,django,database,sqlalchemy,Python,Mysql,Django,Database,Sqlalchemy,我有一个在Django中运行的项目,并通过sessionmaker连接DoSQLAlchemy ORM,如下所示。它基本上使用指定的API(GET、POST、DELETE)处理http方法,并返回、发布、更新或删除db条目 从sqlalchemy导入创建引擎 从sqlalchemy.orm.session导入sessionmaker self.session=sessionmaker( bind=create_引擎('mysql+pymysql://user:pw@127.0.0.1/db')
从sqlalchemy导入创建引擎
从sqlalchemy.orm.session导入sessionmaker
self.session=sessionmaker(
bind=create_引擎('mysql+pymysql://user:pw@127.0.0.1/db')
在myproject.settings
下,我正在使用默认设置,如引擎:'django.db.backends.sqlite3',
我想通过简单地交互所有可能的方法和URI来测试API是否按照预期工作。测试是使用Django的TestCase
类及其客户端
模块完成的。工作非常好
我的问题:
它正在修改(特别是删除和更新)真实数据库中的列,而不是像Django的测试输出所表明的那样使用“created and destructed test_db”
我有点明白为什么(我用SQLAlchemy连接绕过Django的内置db连接),但我对如何解决这个问题感兴趣,即使用真正的测试db。
- 目前我正在使用一个只读mysql用户进行测试,但这使我无法测试实际的POST和DELETE请求
- 我可以尝试使用不同的db进行模拟测试,但我更喜欢另一种解决方案(每次运行测试时,我都必须从真实的db创建一个虚拟db)
数据库={
“默认值”:{
#“引擎”:“django.db.backends.sqlite3”,
#'NAME':os.path.join(BASE_DIR'db.sqlite3'),
'ENGINE':'django.db.backends.mysql',
'NAME':'db',
“用户”:“用户”,
“密码”:“pw”,
“主机”:“127.0.0.1”,
}
}
我得到了django.db.utils.OperationalError:(2006,“SSL连接错误:SSL\u CTX\u set\u tmp\u dh失败”)
,我想这是因为我没有在这里使用pymysql