python– 使用SQLAlchemy防止在单元测试期间触摸数据库

python– 使用SQLAlchemy防止在单元测试期间触摸数据库,第1张

概述我已经使用Django好几年了,但最近决定尝试使用Flask来获得新的API.感谢Carl Meyers在PyCon上testing Django的精彩演示,我一直在使用以下技术来防止在我的Django单元测试中触摸数据库:cursor_wrapper = Mock() cursor_wrapper.side_effect = RuntimeError('N

我已经使用Django好几年了,但最近决定尝试使用Flask来获得新的API.感谢Carl Meyers在PyCon上testing Django的精彩演示,我一直在使用以下技术来防止在我的Django单元测试中触摸数据库

cursor_wrapper = Mock()cursor_wrapper.sIDe_effect = RuntimeError("No touching the database!")@patch('django.db.backends.util.CursorWrapper',cursor_wrapper)class TestPurchaseModel(TestCase):   '''Purchase model test suite'''   ...

我的问题是,任何人都可以告诉我如何使用sqlAlchemy执行相同的基本技术吗?换句话说,我希望任何时候我实际上对数据库运行查询以产生运行时错误.最佳答案您可以使用sqlAlchemy的event system,这允许您在sqlAlchemy执行不同事件时使用回调.

在您的情况下,您可能希望使用before_execute()或before_cursor_execute()事件.例如…

from sqlalchemy import eventclass TestCase(unittest.TestCase):    def setUp(self):        engine = ... # create or access your engine somehow        event.Listen(engine,"before_cursor_execute",self._before_cursor_execute)    # We can also clean up the event handler after the test if we want to    def tearDown(self):        engine = ... # access your engine again        event.remove(engine,self._before_cursor_execute)    def _before_cusor_execute(self,conn,cursor,statement,parameters,context,executemany):        raise RuntimeError('No touching the database!')
总结

以上是内存溢出为你收集整理的python – 使用SQLAlchemy防止在单元测试期间触摸数据库全部内容,希望文章能够帮你解决python – 使用SQLAlchemy防止在单元测试期间触摸数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1207840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存