py.test无法导入我的模块

时间:2015-12-04 07:39:14

标签: python unit-testing python-3.x pytest

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

无论我做什么,我都无法通过py.test-3来执行我的测试。我的目录布局如下所示:

.
├── module
│   ├── __init__.py
│   └── testclass.py
└── tests
    └── test_testclass.py

__init__.py文件如下所示:

__all__ = ['testclass']

testclass.py文件如下所示:

class TestClass(object):

    def __init__(self):
        self.id = 1

我的单元测试是这样的:

import pytest
from module import TestClass

def test_test_class():
    tc = TestClass()
    assert(tc.id==1)

无论我怎么称呼py.test-3,我最终会得到:

E   ImportError: No module named 'module'

2 个答案:

答案 0 :(得分:7)

首先,除非您更改tests/test_testclass.py,否则您需要更改module/__init__.py,如下所示:

from .testclass import TestClass

__all__ = ['TestClass']

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

PYTHONPATH=. py.test

答案 1 :(得分:1)

我会在testfile的头文件中放入pytest的路径执行:

示例:

import os, sys                                                                  
sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir))

有了这个,我可以知道我的(测试)项目中任何子文件夹的路径