【问题标题】:Python unittest (using SQLAlchemy) does not write/update database?Python unittest(使用 SQLAlchemy)不写入/更新数据库?
【发布时间】:2011-05-30 19:32:37
【问题描述】:

我很困惑为什么我的 Python 单元测试在没有实际更新数据库的情况下运行得非常好。

我什至可以从 SQLAlchemy 中查看 SQL 语句并逐步浏览新创建的用户对象的电子邮件 --

...INFO sqlalchemy.engine.base.Engine.0x...954c INSERT INTO users (user_id, user_name, email, ...) VALUES (%(user_id)s, %(user_name)s, %(email)s, ...)
...INFO sqlalchemy.engine.base.Engine.0x...954c {'user_id': u'4cfdafe3f46544e1b4ad0c7fccdbe24a', 'email': u'test@example.com', ...}
> .../tests/unit_tests/test_signup.py(127)test_signup_success()
-> user = user_q.filter_by(user_name='test').first()
(Pdb) n
...INFO sqlalchemy.engine.base.Engine.0x...954c SELECT users.user_id AS users_user_id, ...
FROM users 
WHERE users.user_name = %(user_name_1)s 
 LIMIT 1 OFFSET 0
...INFO sqlalchemy.engine.base.Engine.0x...954c {'user_name_1': 'test'}
> .../tests/unit_tests/test_signup.py(128)test_signup_success()
-> self.assertTrue(isinstance(user, model.User))
(Pdb) user
<pweb.models.User object at 0x9c95b0c>
(Pdb) user.email
u'test@example.com'

然而,在我登录到测试数据库的同时,我确实没有看到那里的新记录。是我完全不知道的 Python/unittest/SQLAlchemy/Pyramid/PostgreSQL 的一些特性吗?

谢谢。

杰瑞

【问题讨论】:

    标签: python unit-testing postgresql sqlalchemy pyramid


    【解决方案1】:

    不知道 SQLAlchemy,但这听起来像是在一个事务中运行测试并且这个事务永远不会提交。要么显式回滚,要么在连接关闭时自动回滚。

    【讨论】:

    猜你喜欢
    • 2021-07-11
    • 2013-04-18
    • 2018-11-29
    • 1970-01-01
    • 2015-08-18
    • 2010-09-21
    • 2015-11-17
    相关资源
    最近更新 更多