2017-09-13 23 views
0

我有以下目錄結構conftest.py導入錯誤:沒有模塊名爲Foo

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

Foo.py包含

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

conftest.py包含:

import pytest 

import sys 
print sys.path 

from Foo.Foo import Foo 

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

test_Foo。 py包含:

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

如果我運行pytest。在測試文件夾,然後我得到一個錯誤,它無法找到該模塊美孚:

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 

是在conftest.py打印出來的sys.path中似乎包括到/ home/Ubuntu的/測試,以便它路徑應該可以找到Foo.py,對嗎?

問題是,它只有當我將conftest.py移動到下面的文件夾時才起作用。

我跑pytest 3.2.2

+0

在'conftest.py'中,嘗試'from .Foo.Foo import Foo'。在嘗試導入'Foo'模塊之前,額外的'''將您退出'Test'目錄。 –

+0

這是否適合你?我試過了,但它似乎不適合我。問題是,當我將conftest.py移動到下面的文件夾時,它可以正常工作。 – ddvlamin

回答

0

錯誤說conftest.py不能因爲ImportError的加載。嘗試在foo夾具內移動導入內容,如下所示:

import pytest 
import sys 
print sys.path 


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