[pytest-dev] top-level conftest.py not recognized when running tests in sub-directories

Jens Hoffmann jh at solute.de
Thu Sep 25 14:20:13 CEST 2014


This gives me a little pain, since I always liked to organize my tests 
OO-like, with classes etc; the docs call pytest fixtures: explicit, 
modular, scalable; but for me "decorating classes and methods" is a tiny 
bit of magic that forces me to leave the pure OO way and to think a 
little more functional;


Jens


On 09/25/2014 02:09 PM, Anatoly Bubenkov wrote:
> the thing is, fixtures have proper dependency injection working
> but combing them with oldish setup_ methods doesn't always work 
> properly out of the box - just because it's impossible to determine 
> the 'right' order, because there's no 'right' order, it's all up to 
> you to determine the dependency tree
>
> On 25 September 2014 14:06, Jens Hoffmann <jh at solute.de 
> <mailto:jh at solute.de>> wrote:
>
>     okay, I'll kill them... thank you for your quick responses
>
>
>
>     On 09/25/2014 02:03 PM, Anatoly Bubenkov wrote:
>>     setup_ methods should just die :)
>>     use fixtures everywhere instead
>>
>>     On 25 September 2014 14:01, Jens Hoffmann <jh at solute.de
>>     <mailto:jh at solute.de>> 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?
>>
>>
>>         Jens
>>
>>
>>
>>         On 09/25/2014 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 <jh at solute.de
>>>         <mailto:jh at solute.de>> 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 <jh at solute.de
>>>>             <mailto:jh at solute.de>> 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
>>>>                 Pytest-dev at python.org <mailto:Pytest-dev at python.org>
>>>>                 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:
>>>             rsc at solute.de <mailto:rsc at solute.de> 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
>>         <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:
>>         rsc at solute.de <mailto:rsc at solute.de> 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
>     <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: rsc at solute.de
>     <mailto:rsc at solute.de> 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: rsc at solute.de 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pytest-dev/attachments/20140925/d693f888/attachment-0001.html>


More information about the Pytest-dev mailing list