Py.test import"没有模块"错误

时间:2015-07-21 10:18:38

标签: python unit-testing module python-3.4 pytest

我是Python的新手,在理解将模块导入Pytest时遇到了一些麻烦。我使用Python 2.7解决了这个问题(通过大量搜索而不是太多了解)。我现在已经开始在virtualenv中使用Python 3.4。

我的目录结构是(基于此http://pytest.org/latest/goodpractises.html):

-root
    -Extractor
        Extractor.py
    -test
        test_extractor.py

# test_extractor.py
import Extractor                    # I assume this is where I'm going wrong
import Extractor.Extractor          # Or this?

我已尝试从根目录运行py.testpy.test tests/test_extractor.py。测试在两种情况下运行,并给出错误:

E   ImportError: No module named 'Extractor'

运行py.test会提供以下信息:

platform darwin -- Python 3.4.2 -- py-1.4.30 -- pytest-2.7.2
rootdir: /my/user/path/root

运行py.test tests/test_extractor.py会提供以下内容:

platform darwin -- Python 3.4.2 -- py-1.4.30 -- pytest-2.7.2
rootdir: my/user/path/root/test

我理解后一个例子不起作用(找不到模块,因为/test目录不是项目根目录)但是为什么它没有从根目录中找到它?

这似乎应该是显而易见的,但我很难理解究竟发生了什么。我是否需要__init__.py个文件(即使在Python 3.4中?)来自http://pytest.org/latest/goodpractises.html

  

请注意

     

您可以为您的应用程序使用Python3命名空间包(PEP420),但pytest仍将根据 init .py文件的存在执行测试包名称发现。如果您使用上面两个推荐的文件系统布局之一,但是从目录中删除 init .py文件,它应该适用于Python3.3及更高版本。但是,从“内联测试”开始,您将需要使用绝对导入来获取应用程序代码。

我是否从根本上误解了这意味着什么?或者写import语句错了?或者错误地调用测试?

0 个答案:

没有答案