2017-09-13 1 views
0

Je la structure de répertoire suivantconftest.py ImportError: Aucun module nommé Foo

/home/ubuntu/test/ 
- Foo/ 
    - Foo.py 
    - __init__.py 
- Test/ 
    - conftest.py 
    - __init__.py 
    - Foo/ 
    - test_Foo.py 
    - __init__.py 

Foo.py contient

class Foo(object): 
    def __init__(self): 
    pass 

conftest.py contient:

import pytest 

import sys 
print sys.path 

from Foo.Foo import Foo 

@pytest.fixture(scope="session") 
def foo(): 
    return Foo() 

test_Foo. py contient:

class TestFoo(): 
    def test___init__(self,foo): 
    assert True 

Si je cours pytest. dans le dossier de test puis-je obtenir une erreur qu'il ne peut pas trouver le module Foo:

Traceback (most recent call last): 
    File "/home/ubuntu/pythonVirtualEnv/local/lib/python2.7/site-packages/_pytest/config.py", line 379, in _importconftest 
    mod = conftestpath.pyimport() 
    File "/home/ubuntu/pythonVirtualEnv/local/lib/python2.7/site-packages/py/_path/local.py", line 662, in pyimport 
    __import__(modname) 
    File "/home/ubuntu/pythonVirtualEnv/local/lib/python2.7/site-packages/_pytest/assertion/rewrite.py", line 212, in load_module 
    py.builtin.exec_(co, mod.__dict__) 
    File "/home/ubuntu/pythonVirtualEnv/local/lib/python2.7/site-packages/py/_builtin.py", line 221, in exec_ 
    exec2(obj, globals, locals) 
    File "<string>", line 7, in exec2 
    File "/home/ubuntu/test/Test/conftest.py", line 6, in <module> 
    from Foo.Foo import Foo 
ImportError: No module named Foo 
ERROR: could not load /home/ubuntu/test/Test/conftest.py 

Le sys.path qui est imprimé dans conftest.py semble inclure le/home/ubuntu/chemin de test il devrait être capable de trouver Foo.py, non? Le fait est que cela ne fonctionne que lorsque je déplace conftest.py dans le dossier ci-dessous.

Je cours pytest 3.2.2

+0

Dans 'conftest.py', essayez' from .Foo.Foo import Foo'. Le '.' supplémentaire vous retire du répertoire' Test' avant d'essayer d'importer le module 'Foo'. –

+0

Est-ce que cela fonctionne pour vous? J'ai essayé, mais cela ne semble pas fonctionner pour moi. La chose est que cela fonctionne quand je déplace conftest.py dans le dossier ci-dessous. – ddvlamin

Répondre

0

L'erreur dit le conftest.py ne peut pas être chargé en raison d'une ImportError. Essayez de déplacer votre importation dans l'appareil foo comme ceci:

import pytest 
import sys 
print sys.path 


@pytest.fixture(scope="session") 
def foo(): 
    from Foo.Foo import Foo 
    return Foo()