py.test无法导入我的模块

Fab*_*ian 5 python unit-testing pytest python-3.x

我正在努力获得一个python导入权.我想要实现的是拥有一个包含多个源文件的模块和一个带有单元测试的测试文件夹.

不管我做什么,我都不能让py.test-3来执行我的测试.我的目录布局如下所示:

.
??? module
?   ??? __init__.py
?   ??? testclass.py
??? tests
    ??? test_testclass.py
Run Code Online (Sandbox Code Playgroud)

__init__.py文件如下所示:

__all__ = ['testclass']
Run Code Online (Sandbox Code Playgroud)

testclass.py文件如下所示:

class TestClass(object):

    def __init__(self):
        self.id = 1
Run Code Online (Sandbox Code Playgroud)

我的单元测试如下:

import pytest
from module import TestClass

def test_test_class():
    tc = TestClass()
    assert(tc.id==1)
Run Code Online (Sandbox Code Playgroud)

无论我如何调用py.test-3,我最终会得到:

E   ImportError: No module named 'module'
Run Code Online (Sandbox Code Playgroud)

fal*_*tru 7

首先,除非你改变tests/test_testclass.py,你需要改变module/__init__.py如下:

from .testclass import TestClass

__all__ = ['TestClass']
Run Code Online (Sandbox Code Playgroud)

并且,当您运行py.test set PYTHONPATH环境变量时,让解释器知道何时查找模块:

PYTHONPATH=. py.test
Run Code Online (Sandbox Code Playgroud)