py.test can't import my module

冷暖自知 提交于 2019-12-07 04:17:07

问题


I am struggeling getting a python import right. What I want to achieve is to have a module with several source files and a test folder with unit tests.

No matter what I do, I can't get py.test-3 to execute my tests. My directory layout looks like this:

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

The __init__.py file looks like this:

__all__ = ['testclass']

The testclass.py file looks like this:

class TestClass(object):

    def __init__(self):
        self.id = 1

And my unit test like this:

import pytest
from module import TestClass

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

No matter how I call py.test-3 I will end up with a:

E   ImportError: No module named 'module'

回答1:


First, unless you change the tests/test_testclass.py, you need to change module/__init__.py as follow:

from .testclass import TestClass

__all__ = ['TestClass']

And, when you run py.test set PYTHONPATH environment variable to let the interpreter know when to find modules:

PYTHONPATH=. py.test



回答2:


I would put in a header of testfile the path execution for pytest:

example:

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

With this I could know the path of any subfolder in my (test) project



来源:https://stackoverflow.com/questions/34083214/py-test-cant-import-my-module

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!