On Thu, Sep 25, 2014 at 14:01 +0200, Jens Hoffmann wrote: > Okay, writing the example I found out what the actual problem is: > > > In the minimal example the fixture *is* executed, before any test > but *after* my test classes setup_method. > > I though expect that a session fixture is executed also before a > classes setup_method (use case: fixture sets up DB, setup_method > sets up some tables); > > > Am I wrong?
Your expectation is reasonable. There also is https://bitbucket.org/hpk42/pytest/issue/517/setup_-executed-before-all-fixtures I think the best way to fix it is to re-implement how xUnit setup methods are called. Currently pytest has special code that detects and calls them independently of its own more general fixture system. There is one straightforward solution to re-implement setup* functions in terms of autouse fixtures. Via "request.function", "request.cls", "request.module" you have access to the objects that have setup_module|class|method or setUp{Class}/setUpModule/... methods and can call the methods, register finalizers as neccessary. The less straightforward but more efficient solution is to parse setup* functions at the same time when we parse the "@pytest.fixture" functions and add them as fixtures. If no setup* functions are found anywhere, there would be no overhead. The previous solution add a constant overhead as xUnit-fixtures would be checked for at each function function. best, holger > > Jens > > > On 09/25/2and 014 01:18 PM, Anatoly Bubenkov wrote: > >please upload fully reproducable small example somewhere > >or, ideally, create a test and have a PR with it > > > >On 25 September 2014 13:14, Jens Hoffmann <[email protected] > ><mailto:[email protected]>> wrote: > > > > Yes, the directories test and test/module all contain a > > __init__.py; sorry, that I didnt mention this important info. > > > > So from your question I guess that you expect py.test to find and > > execute conftest.py in all the cases shown? > > > > > > Jens > > > > > > > > On 09/25/2014 01:09 PM, Anatoly Bubenkov wrote: > >> did you add __init__.py in all folders? > >> > >> On 25 September 2014 12:35, Jens Hoffmann <[email protected] > >> <mailto:[email protected]>> wrote: > >> > >> Hi, > >> > >> > >> we are working with pytest 2.6.2 and I run into a problem > >> with my conftest session fixture setup. > >> > >> My project structure looks something like this: > >> > >> . > >> ├── project > >> │ └── module > >> │ └── foo.py > >> └── test > >> ├── conftest.py > >> └── module > >> └── test_foo.py > >> > >> > >> conftest.py contains a single fixture with scope="session" > >> and autouse=True, setting up some database that is needed for > >> every single unittest. So also test_foo.py depends on that > >> database setup. > >> > >> Now some py.test runs: > >> > >> $ py.test > >> => conftest.py called, database setup properly, tests pass > >> > >> $ py.test test/module > >> => tests fail, fixture in conftest.py not executed > >> > >> $ py.test test/module/test_foo.py > >> => tests fail, fixture in conftest.py not executed > >> > >> $ py.test -k MyTestClassContainedInTestFooDotPy > >> => tests fail, fixture in conftest.py not executed > >> > >> > >> Now my question/problem: Are all these outcoms expected > >> behaviour? I hoped that all the runs would pass, that is > >> execute my session fixture so that I wont need to always run > >> my whole test suite. > >> > >> > >> Thank you for your answer, > >> Jens > >> > >> _______________________________________________ > >> Pytest-dev mailing list > >> [email protected] <mailto:[email protected]> > >> https://mail.python.org/mailman/listinfo/pytest-dev > >> > >> > >> > >> > >> -- Anatoly Bubenkov > > > > -- Jens Hoffmann Softwareentwickler Datamanagement > >billiger.de > > <http://billiger.de> solute gmbh Zeppelinstraße 15 D-76185 > > Karlsruhe Tel: +49 (0)721 - 86956-24 > > <tel:%2B49%20%280%29721%20-%2086956-24> Fax: +49 (0)721 - 86956-66 > > <tel:%2B49%20%280%29721%20-%2086956-66> E-Mail: [email protected] > > <mailto:[email protected]> Web: http://www.billiger.de > > Geschäftsführer: Lorenz Petersen Sitz: Karlsruhe Registergericht: > > Amtsgericht Mannheim Registernummer: HRB 110579 > > Umsatzsteueridentifikationsnummer: DE234663798 > > > > http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png > > > > > > > > > >-- > >Anatoly Bubenkov > > -- > Jens Hoffmann Softwareentwickler Datamanagement billiger.de solute > gmbh Zeppelinstraße 15 D-76185 Karlsruhe Tel: +49 (0)721 - 86956-24 > Fax: +49 (0)721 - 86956-66 E-Mail: [email protected] Web: > http://www.billiger.de Geschäftsführer: Lorenz Petersen Sitz: > Karlsruhe Registergericht: Amtsgericht Mannheim Registernummer: HRB > 110579 Umsatzsteueridentifikationsnummer: DE234663798 > http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png > _______________________________________________ > Pytest-dev mailing list > [email protected] > https://mail.python.org/mailman/listinfo/pytest-dev _______________________________________________ Pytest-dev mailing list [email protected] https://mail.python.org/mailman/listinfo/pytest-dev
