Improve robustness of tests with sqlalchemy#17
Open
nphilipp wants to merge 3 commits intoTurboGears:developmentfrom
Open
Improve robustness of tests with sqlalchemy#17nphilipp wants to merge 3 commits intoTurboGears:developmentfrom
nphilipp wants to merge 3 commits intoTurboGears:developmentfrom
Conversation
Different levels of tests (e.g. app/functional, db model) can cause init_model() to be called a couple of times. Dispose of the current session (if any) so subsequent tests can start with a clean slate.
Mixed use of transaction and SQLAlchemy session APIs for handling transactions in tests can cause consecutive tests that in some way access the database to fail. The websetup package uses the transaction API, so use the same in the model test harness.
This is to deal with potentially aborted transactions in tests.
Member
|
I'll try to reproduce locally the behaviour to have a better understanding of what's going on. I'm fairly ok with the changes, but I want to understand what causes them to be needed before merging them. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes some issues with quickstarted projects:
model.init_model()could be called multiple times through loading the app (functional tests) ortests.models.setup_db()but wouldn't dispose of the previous sessiontransactionandDBSessionAPIs to manage transactionswebsetupassumes that transactions are in theACTIVEstate but this doesn't hold true ifteardown_db()was called beforeThis would cause functional tests to fail setting up the test application if
setup_db()was called in a previous test, which can easily be tested by renaming thetests.functionalto e.g.tests.zzz_functionalin a quickstarted project and then running the test suite.NB: Having slept a night over it, a different way to address this would be to have exactly one test app, and one call to
setup_db()prior to all tests but I'm not sure how feasible this is.