On 5/22/13, [email protected] <[email protected]> wrote:
> Author: astaric
> Date: Wed May 22 15:47:48 2013
> New Revision: 1485255
>
> URL: http://svn.apache.org/r1485255
> Log:
> Force trac to use separate db connections for different environments when
> running tests.
>
> Unittests in python2.7 run in the same process and share the same
> connection
> pool. This basically means that all tests share the same in-memory
> database,

yes but , considering the fact that tests are executed in sequential
order , there's no harm done for well-written test cases

> and calling reset_db in teardown methods destroys data prepared in __init__
> of other tests.

Test data must not be prepared on __init__ . Disposing test data in
tearDown is quite convenient to isolate test case execution . If test
data is created by test case #1 and it's not disposed afterwards then
it might be messing around until the end of the test run thus
polluting test reports by introducing false negative results . This is
a terrible headache wrt test code , which btw , I'm suffering now with
RPC plugin test suite ... so please, do not alter that behavior (i.e.
clean in-memory DB expected as TC pre/post-condition ) .


> Trac tests do not do prepare data in __init__,

indeed , for a good reason ...

> but when run
> with a product env, which stores config values to database, this behavior
> causes multiple tests to fail.
>

then why not to ensure that such values are configured at the
beginning of each test case inside setUp method .

> We workaround this issue by monkey patching trac's ConnectionPool. We force
> it to establish a separate connection for each DatabaseManager.
>

... this starts to make sense to me ... but, isn't it the very same DB
in the end ?

in any case , please beware of the facts above in spite of emitting
test reports we can trust .

[...]

-- 
Regards,

Olemis.

Reply via email to