我很困惑为什么我的 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'[email protected] /cdn-cgi/l/email-protection', ...}
> .../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'[email protected] /cdn-cgi/l/email-protection'
然而在同时当我登录到测试数据库时,我这样做not在那里查看新记录。这是我完全不知道的 Python/unittest/SQLAlchemy/Pyramid/PostgreSQL 的某些功能吗?
Thanks.
Jerry
不了解 SQLAlchemy,但这听起来像是测试正在事务中运行,并且该事务从未提交。要么显式回滚,要么在连接关闭时自动回滚。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)