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

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


Okay, I clearly get what Guido said, but I say: let the folks do what 
they want to! pytest now kind of forces me to think like Guido;


Jens



On 09/25/2014 02:23 PM, Anatoly Bubenkov wrote:
> exactly, just throw away all those classes - Guido said, classes are 
> NOT namespaces
> you might only need classes for the polymorphism, but it's no-use in 
> the tests
>
> On 25 September 2014 14:20, Jens Hoffmann <jh at solute.de 
> <mailto:jh at solute.de>> wrote:
>
>     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
>     <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 billiger.de solute gmbh 
_______________________________________________________________ 
jh at solute.de http://www.billiger.de http://www.solute.de 
_______________________________________________________________ Office 
Karlsruhe Zeppelinstraße 15 D-76185 Karlsruhe Tel: ... Fax: ... 
_______________________________________________________________ 
Geschäftsführer: Lorenz Petersen Sitz: Karlsruhe Registergericht: 
Amtsgericht Mannheim Registernummer: HRB 110579 
Umsatzsteueridentifikationsnummer: DE234663798
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pytest-dev/attachments/20140925/7e904f27/attachment-0001.html>


More information about the Pytest-dev mailing list