On 05/06/2019 20:47, Mike Bayer wrote:


The panacea I'm after is to be able to run the DDL in a transaction, run
each test in a subtransaction off that which is rolled back at the end
of each test, but also be able to check that the code under test is
doing session.commit() where it should. Where the pattern we're
discussing, I certainly have the first two, but as you can see from what
I've just pasted above, the third one isn't there, but is it possible?


so your app code calls .flush(), .commit(), and .close() explicitly within each persistence method?

Not really, it's more framework code, but most frameworks nowadays provide testing methods along the lines of:

client.get('/something?whatever=1')

...and they exercise the full request handling code, that tends to include some form of session lifecycle middleware or what have you.

and you need to make sure the .commit() is in the middle?

Yep.

I'd probably use mock.patch for that level of granularity.   Usually I'd not have specific business methods calling commit() and close() at all, at the very least not .close().

Okay, so sounds like in an ideal world, the framework should provide a way to sub out that transaction middleware when unit testing and then for functional testing, I just need to fall back to dropping everything in the db, or having a fresh db created from scratch?

cheers,

Chris

--
SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/c5c0a17c-0671-b86c-842e-f03cded132ba%40withers.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to