Note that there are some explanatory texts on larger screens.

plurals
  1. PO`py.test` and `__init__.py` files
    text
    copied!<p>I thought <code>py.test</code> is "standalone" in a sense that it treats <code>test_*.py</code> files "as it is", and only imports modules specified in these files, with no respect to any surrounding files. It looks like I'm wrong. Here is my dialog with <code>py.test</code>:</p> <pre><code>$ ls __init__.py test_pytest.py $ cat __init__.py $ cat test_pytest.py def test_pytest(): assert True $ py.test test_pytest.py ========================================================= test session starts ========================================================== platform darwin -- Python 2.7.2 -- pytest-2.1.3 collected 0 items / 1 errors ================================================================ ERRORS ================================================================ ___________________________________________________ ERROR collecting test_pytest.py ____________________________________________________ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/py-1.4.5-py2.7.egg/py/_path/local.py:529: in pyimport &gt; mod = __import__(modname, None, None, ['__doc__']) E ImportError: No module named test_pytest ======================================================= 1 error in 0.01 seconds ======================================================== $ rm __init__.py $ py.test test_pytest.py ========================================================= test session starts ========================================================== platform darwin -- Python 2.7.2 -- pytest-2.1.3 collected 1 items test_pytest.py . ======================================================= 1 passed in 0.01 seconds ======================================================= $ </code></pre> <p>How do I make <code>py.test</code> work and still have my <code>__init__.py</code> files?</p> <p><strong>UPDATE</strong></p> <p>In comments, Holger Krekel asked, what is the name of parent directory. And it turns out that I can reproduce the error above only having a certain parent directory name (e.g. the same name as one of the packages installed, like <code>distutils</code>). See here: </p> <pre><code>~/test_min $ tree . └── distutils ├── __init__.py └── test_pytest.py 1 directory, 2 files ~/test_min $ cat distutils/__init__.py ~/test_min $ cat distutils/test_pytest.py def test_pytest(): assert True ~/test_min $ py.test distutils/test_pytest.py ======================== test session starts ========================= platform darwin -- Python 2.7.2 -- pytest-2.1.3 collected 0 items / 1 errors =============================== ERRORS =============================== _____________ ERROR collecting distutils/test_pytest.py ______________ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/py-1.4.5-py2.7.egg/py/_path/local.py:529: in pyimport &gt; mod = __import__(modname, None, None, ['__doc__']) E ImportError: No module named test_pytest ====================== 1 error in 0.01 seconds ======================= ~/test_min $ rm distutils/__init__.py ~/test_min $ py.test distutils/test_pytest.py ======================== test session starts ========================= platform darwin -- Python 2.7.2 -- pytest-2.1.3 collected 1 items distutils/test_pytest.py . ====================== 1 passed in 0.01 seconds ====================== ~/test_min $ touch __init__.py ~/test_min $ ls __init__.py distutils ~/test_min $ touch distutils/__init__.py ~/test_min $ py.test distutils/test_pytest.py ======================== test session starts ========================= platform darwin -- Python 2.7.2 -- pytest-2.1.3 collected 1 items distutils/test_pytest.py . ====================== 1 passed in 0.02 seconds ====================== ~/test_min $ rm __init__.py ~/test_min $ py.test distutils/test_pytest.py ======================== test session starts ========================= platform darwin -- Python 2.7.2 -- pytest-2.1.3 collected 0 items / 1 errors =============================== ERRORS =============================== _____________ ERROR collecting distutils/test_pytest.py ______________ /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/py-1.4.5-py2.7.egg/py/_path/local.py:529: in pyimport &gt; mod = __import__(modname, None, None, ['__doc__']) E ImportError: No module named test_pytest ====================== 1 error in 0.01 seconds ======================= ~/test_min $ mv distutils foobar ~/test_min $ py.test foobar/test_pytest.py ======================== test session starts ========================= platform darwin -- Python 2.7.2 -- pytest-2.1.3 collected 1 items foobar/test_pytest.py . ====================== 1 passed in 0.01 seconds ====================== ~/test_min $ </code></pre> <p>Hope this additional information will help.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload