Python unittest (using SQLAlchemy) does not write/update database?

Posted by Jerry on Stack Overflow See other posts from Stack Overflow or by Jerry
Published on 2010-12-26T08:47:37Z Indexed on 2010/12/26 8:54 UTC
Read the original article Hit count: 255

Hi,

I am puzzled at why my Python unittest runs perfectly fine without actually updating the database.

I can even see the SQL statements from SQLAlchemy and step through the newly created user object's email --

...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]', ...}
> .../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]'

Yet at the same time when I login to the test database, I do not see the new record there. Is it some feature from Python/unittest/SQLAlchemy/Pyramid/PostgreSQL that I'm totally unaware of?

Thanks.

Jerry

© Stack Overflow or respective owner

Related posts about python

Related posts about unit-testing