Frage

Ich bin verwirrt darüber, warum mein Python Unittest vollkommen in Ordnung ist, ohne die Datenbank tatsächlich zu aktualisieren.

Ich kann sogar die SQL -Anweisungen von SQLalchemy sehen und durch die E -Mail des neu erstellten Benutzerobjekts gehen -

...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'

Doch am gleiche Zeit Wenn ich mich bei der Testdatenbank anmelde, tue ich das nicht Sehen Sie dort den neuen Rekord. Ist es eine Funktion von Python/unittest/sqlalchemy/pyramid/postgresql, der ich mich völlig nicht bewusst bin?

Vielen Dank.

Jerry

War es hilfreich?

Lösung

Sqlalchemy nicht zu kennen, aber das klingt so, als würde der Test in einer Transaktion durchgeführt und dass diese Transaktion niemals begangen wird. Entweder explizit zurückgerollt oder automatisch zurückgerollt, wenn die Verbindung schließt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top