[py-dev] py.test : setup / teardown at the directory level

Philippe Fremy phil at freehackers.org
Wed Oct 28 10:09:22 CET 2009


holger krekel wrote:
> Hi Philippe, 
>
> your described use case makes lots of sense to me. 
>
> I coded an example which i hope fits it. 
>
> It uses the new "local plugins" (i.e.  plugins defined in a
> conftest.py) and funcargs, if you don't know about them
> yet i hope this is good to skim/read first: 
> http://codespeak.net/py/trunk/test/funcargs.html
>
> Here is the example: 
>
>     http://bitbucket.org/hpk42/py-trunk/src/tip/example/funcarg/lazysetup/
>
> using py-trunk (probably also works with the 1.0.0b1, haven't checked)
> in the lazysetup directory you can now do
>
>     py.test sub1   # will wait 5 seconds because test
>                    # functions access the setup defined in
>                    # conftest.py 
>
>     py.test sub2   # will immediately run as the "setup"
>                    # funcarg is not requested 
>                    
> The idea for this conftest.py implementation is simple: 
> setup the funcarg when first needed and only tear it down
> when the test process exits.  
>
> does this make sense to you?  feel free to play around
> and ask questions - I'd then put the above example into 
> the "tutorial" example section of the funcarg doc. 
>
> One advantage of the above approach is that you do not
> need to do anything in your test modules anymore 
> (no boilerplate importing of setup_module etc.) 
> than requesting the object you want to setup. 
>   
I am reviving this old thread.

Honestly, I haven't tried the funcargs based solution that you propose.
The reasons are :
- I would really prefer to have setup/teardown at directory level and
your solution is more per-session level
- I don't like the idea of modifying 100 tests just to get a
setup/teardown effect
- I still find funcargs a bit cumbersome as explained in my other mail.

I had a quick look at the plugin architecture to see if I could
implement an equivalent of setup/teardown at directory level, but I
don't think it's possible.

Can you consider this as a feature request ?

cheers,

Philippe









More information about the Pytest-dev mailing list