If you only need to support postgresql you may also create a db to be used
as template, then each test gest it's own db generated from the original
template db.
I think this should be the fastest way of restoring the db state after a
test

On Mon, 2 Aug 2021, 19:24 Dejan Čabrilo, <dcabr...@gmail.com> wrote:

> Hi,
>
> From what I see, that's only pertinent to the ORM, right? I don't use ORM,
> SqlAlchemy core only, so I think that wouldn't work, right?
>
> Thanks!
> Dejan
>
> On Saturday, July 31, 2021 at 7:41:49 AM UTC+2 cfede...@gmail.com wrote:
>
>> Hi,
>>
>> Have you tried using this pattern from the documentation? I think you can
>> also use that while using only connections
>>
>> https://docs.sqlalchemy.org/en/14/orm/session_transaction.html?highlight=after_transaction_end#joining-a-session-into-an-external-transaction-such-as-for-test-suites
>>
>> On Saturday, 31 July 2021 at 00:24:36 UTC+2 Jonathan Vanasco wrote:
>>
>>> I typically do local developer testing with sqlite3, and the switch the
>>> database to postgresql for build/deploy/ci testing in the cloud.
>>>
>>> For complex tests, I typically use a fresh database "image". e.g. a
>>> sqlite file or pgdump output that is tracked in git.
>>>
>>> This is not the solution you're looking for, but i've found it very
>>> useful.  I spent a long time working on a testing setup like you are trying
>>> to accomplish, but abandoned it when we built out an integrated test suite
>>> and data had to persist across multiple database connections.
>>> On Friday, July 30, 2021 at 4:19:35 AM UTC-4 dcab...@gmail.com wrote:
>>>
>>>> Hello everyone,
>>>>
>>>> I am working on a new project using SqlAlchemy Core 1.4 with Postgresql
>>>> and wanted to implement the following pattern for my tests:
>>>>
>>>> - Before each test I would start a transaction (in a
>>>> @pytest.fixture(autorun=True))
>>>> - Each test may create its own transactions
>>>> - At the end of each test, I would rollback the transaction
>>>>
>>>> The purpose is to keep the database "clean" between tests and not have
>>>> to manually delete all inserted data.
>>>>
>>>> However, it seems that SqlAlchemy 1.4 is deprecating nested
>>>> transactions and that they will be removed in 2.0.
>>>>
>>>> Is there an alternative approach or best practice that I can use for
>>>> isolating tests in transactions?
>>>>
>>>> I had an alternative idea, like:
>>>>
>>>> - Before each test create the first savepoint (let's call current
>>>> savepoint N)
>>>> - Catch any commit in the code and instead create a savepoint N+1
>>>> - Catch any rollback and rollback to N-1
>>>>
>>>> Obviously, that seems like a lot of work and I'm not even sure if I can
>>>> intercept begins, commits and rollbacks that easily.
>>>>
>>>> Alternatively, I could run upgrade and downgrade migrations on every
>>>> test, but that would slow the test suite down a lot.
>>>>
>>>> Any advice and thoughts would be appreciated.
>>>>
>>>> Thanks!
>>>> Dejan
>>>>
>>> --
> 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 a topic in the
> Google Groups "sqlalchemy" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sqlalchemy/iQnCq-1FX00/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> sqlalchemy+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sqlalchemy/fd9fc70a-94e3-4855-a22c-d803e75e07ecn%40googlegroups.com
> <https://groups.google.com/d/msgid/sqlalchemy/fd9fc70a-94e3-4855-a22c-d803e75e07ecn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/CAN19dyfbb0vVNHVfahW8GVwajVbF%3DOag7BcW5XQWxUz1Jw94Pg%40mail.gmail.com.

Reply via email to