<p dir="ltr">So I'll give an alternative opinion and say that I don't mind using classes as namespaces for py.test. The simple migration path away from .setup_method() is to create an autouse fixture in the class instead.</p>
<div class="gmail_quote">On 25 Sep 2014 13:21, "Jens Hoffmann" <<a href="mailto:jh@solute.de">jh@solute.de</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
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;<br>
<br>
<br>
Jens<br>
<br>
<br>
<div>On 09/25/2014 02:09 PM, Anatoly
Bubenkov wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">the thing is, fixtures have proper dependency
injection working
<div>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</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 25 September 2014 14:06, Jens
Hoffmann <span dir="ltr"><<a href="mailto:jh@solute.de" target="_blank">jh@solute.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> okay, I'll kill
them... thank you for your quick responses
<div>
<div><br>
<br>
<br>
<div>On 09/25/2014 02:03 PM, Anatoly Bubenkov wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">setup_ methods should just die :)
<div>use fixtures everywhere instead</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 25 September 2014
14:01, Jens Hoffmann <span dir="ltr"><<a href="mailto:jh@solute.de" target="_blank">jh@solute.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Okay,
writing the example I found out what the
actual problem is:<br>
<br>
<br>
In the minimal example the fixture *is*
executed, before any test but *after* my
test classes setup_method.<br>
<br>
<br>
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);<br>
<br>
<br>
Am I wrong?<span><font color="#888888"><br>
<br>
<br>
Jens</font></span>
<div>
<div><br>
<br>
<br>
<div>On 09/25/2014 01:18 PM, Anatoly
Bubenkov wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">please upload fully
reproducable small example somewhere
<div>or, ideally, create a test and
have a PR with it</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On 25
September 2014 13:14, Jens
Hoffmann <span dir="ltr"><<a href="mailto:jh@solute.de" target="_blank">jh@solute.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Yes, the
directories test and
test/module all contain a
__init__.py; sorry, that I
didnt mention this important
info.<br>
<br>
So from your question I guess
that you expect py.test to
find and execute conftest.py
in all the cases shown?<br>
<br>
<br>
Jens
<div>
<div><br>
<br>
<br>
<div>On 09/25/2014 01:09
PM, Anatoly Bubenkov
wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">did you
add __init__.py in all
folders?<br>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On
25 September 2014
12:35, Jens Hoffmann
<span dir="ltr"><<a href="mailto:jh@solute.de" target="_blank">jh@solute.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
<br>
we are working
with pytest 2.6.2
and I run into a
problem with my
conftest session
fixture setup.<br>
<br>
My project
structure looks
something like
this:<br>
<br>
.<br>
├── project<br>
│ └── module<br>
│ └── foo.py<br>
└── test<br>
├── conftest.py<br>
└── module<br>
└── test_foo.py<br>
<br>
<br>
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.<br>
<br>
Now some py.test
runs:<br>
<br>
$ py.test<br>
=> conftest.py
called, database
setup properly,
tests pass<br>
<br>
$ py.test
test/module<br>
=> tests fail,
fixture in
conftest.py not
executed<br>
<br>
$ py.test
test/module/test_foo.py<br>
=> tests fail,
fixture in
conftest.py not
executed<br>
<br>
$ py.test -k
MyTestClassContainedInTestFooDotPy<br>
=> tests fail,
fixture in
conftest.py not
executed<br>
<br>
<br>
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.<br>
<br>
<br>
Thank you for your
answer,<br>
Jens<br>
<br>
_______________________________________________<br>
Pytest-dev mailing
list<br>
<a href="mailto:Pytest-dev@python.org" target="_blank">Pytest-dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/pytest-dev" target="_blank">https://mail.python.org/mailman/listinfo/pytest-dev</a><br>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">Anatoly
Bubenkov<br>
</div>
</div>
</blockquote>
<br>
</div>
</div>
<span><font color="#888888">
<div>-- <br>
Jens Hoffmann
Softwareentwickler
Datamanagement <a href="http://billiger.de" target="_blank">billiger.de</a> solute gmbh
Zeppelinstraße 15
D-76185 Karlsruhe Tel: <a href="tel:%2B49%20%280%29721%20-%2086956-24" value="+497218695624" target="_blank">+49
(0)721 - 86956-24</a>
Fax: <a href="tel:%2B49%20%280%29721%20-%2086956-66" value="+497218695666" target="_blank">+49
(0)721 - 86956-66</a>
E-Mail: <a href="mailto:rsc@solute.de" target="_blank">rsc@solute.de</a> Web: <a href="http://www.billiger.de" target="_blank">http://www.billiger.de</a>
Geschäftsführer: Lorenz
Petersen Sitz: Karlsruhe
Registergericht:
Amtsgericht Mannheim
Registernummer: HRB
110579
Umsatzsteueridentifikationsnummer:
DE234663798 <a href="http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png" target="_blank">http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png</a></div>
</font></span></div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">Anatoly Bubenkov<br>
</div>
</div>
</blockquote>
<br>
<div>-- <br>
Jens Hoffmann Softwareentwickler
Datamanagement <a href="http://billiger.de" target="_blank">billiger.de</a>
solute gmbh Zeppelinstraße 15 D-76185
Karlsruhe Tel: <a href="tel:%2B49%20%280%29721%20-%2086956-24" value="+497218695624" target="_blank">+49 (0)721 -
86956-24</a> Fax: <a href="tel:%2B49%20%280%29721%20-%2086956-66" value="+497218695666" target="_blank">+49 (0)721 -
86956-66</a> E-Mail: <a href="mailto:rsc@solute.de" target="_blank">rsc@solute.de</a>
Web: <a href="http://www.billiger.de" target="_blank">http://www.billiger.de</a>
Geschäftsführer: Lorenz Petersen Sitz:
Karlsruhe Registergericht: Amtsgericht
Mannheim Registernummer: HRB 110579
Umsatzsteueridentifikationsnummer:
DE234663798 <a href="http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png" target="_blank">http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png</a></div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">Anatoly Bubenkov<br>
</div>
</div>
</blockquote>
<br>
<div>-- <br>
Jens Hoffmann Softwareentwickler Datamanagement <a href="http://billiger.de" target="_blank">billiger.de</a> solute gmbh
Zeppelinstraße 15 D-76185 Karlsruhe Tel: <a href="tel:%2B49%20%280%29721%20-%2086956-24" value="+497218695624" target="_blank">+49 (0)721 -
86956-24</a> Fax: <a href="tel:%2B49%20%280%29721%20-%2086956-66" value="+497218695666" target="_blank">+49 (0)721 -
86956-66</a> E-Mail: <a href="mailto:rsc@solute.de" target="_blank">rsc@solute.de</a>
Web: <a href="http://www.billiger.de" target="_blank">http://www.billiger.de</a>
Geschäftsführer: Lorenz Petersen Sitz: Karlsruhe
Registergericht: Amtsgericht Mannheim
Registernummer: HRB 110579
Umsatzsteueridentifikationsnummer: DE234663798
<a href="http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png" target="_blank">http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png</a></div>
</div>
</div>
</div>
</blockquote>
</div>
<br>
<br clear="all">
<div><br>
</div>
-- <br>
<div dir="ltr">Anatoly Bubenkov<br>
</div>
</div>
</blockquote>
<br>
<div>-- <br>
Jens Hoffmann
Softwareentwickler Datamanagement <a href="http://billiger.de" target="_blank">billiger.de</a> solute gmbh
Zeppelinstraße 15
D-76185 Karlsruhe Tel: <a href="tel:%2B49%20%280%29721%20-%2086956-24" value="+497218695624" target="_blank">+49 (0)721 - 86956-24</a>
Fax: <a href="tel:%2B49%20%280%29721%20-%2086956-66" value="+497218695666" target="_blank">+49 (0)721 - 86956-66</a>
E-Mail: <a href="mailto:rsc@solute.de" target="_blank">rsc@solute.de</a>
Web: <a href="http://www.billiger.de" target="_blank">http://www.billiger.de</a>
Geschäftsführer: Lorenz Petersen Sitz: Karlsruhe
Registergericht: Amtsgericht Mannheim
Registernummer: HRB 110579
Umsatzsteueridentifikationsnummer: DE234663798
<a href="http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png" target="_blank">http://cdn.billiger.com/static/mail/billiger_today_logo_dunkel_20140911.png</a></div>
</div>
<br>_______________________________________________<br>
Pytest-dev mailing list<br>
<a href="mailto:Pytest-dev@python.org">Pytest-dev@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/pytest-dev" target="_blank">https://mail.python.org/mailman/listinfo/pytest-dev</a><br>
<br></blockquote></div>