我有点生锈Python(2.7)模块&包,所以我希望能找到一些帮助。我在写一些使用硒的测试。我想组织“场景家庭”的测试,我想实施一个助手类来处理一些样板,这些样板将成为我所有测试的基础类。 基本上我想有一个结构看起来像:用于硒测试的Python项目结构
.
├── assets
│ └── ressource.ext
├── tests
│ ├── __init__.py
│ ├── user
│ │ ├── __init__.py
│ │ └── upload.py
│ └── visitor
│ ├── __init__.py
│ ├── homepage.py
│ ├── login.py
│ ├── search.py
│ └── signup.py
└── utils
├── __init__.py
└── base.py
我完全卡在如何使utils.base
模块可见例如tests.visitor.signup
模块和仍允许使用python tests/visitor/signup.py
运行此特定测试。 我该怎么做?
谢谢!
编辑:使事情更容易在这里的是什么,我试图做一个虚拟样品:
mkdir -p {utils,tests/user}
touch {utils,tests{,/user}}/__init__.py
echo -e "import unittest\n\nclass Base(unittest.TestCase):\n pass" > utils/base.py
echo -e "from utils.base import Base\n\nclass MyTest(Base):\n pass\n\nif __name__ == '__main__':\n unittest.main()" > tests/user/upload.py
这将产生以下树空__init__.py
文件和进口我试图实现测试/用户/ upload.py:
dummy/
├── tests
│ ├── __init__.py
│ └── user
│ ├── __init__.py
│ └── upload.py
└── utils
├── __init__.py
└── base.py
现在,如果我在dummy/
文件夹中我得到这个:
(env)dummy $ python tests/user/upload.py
Traceback (most recent call last):
File "tests/user/upload.py", line 1, in <module>
from utils.base import Base
ImportError: No module named utils.base
但是,如果我运行它交互显然有没有问题:
(env) dummy $ python
Python 2.7.6 (default, Jan 16 2014, 16:39:48)
>>> from utils.base import Base
>>>
我的问题一定是非常愚蠢的,但我看不到我在做什么错。而我不明白的是,指定python路径((env) dummy $ PYTHON_PATH=. python tests/user/upload.py
)不能解决问题。
感谢您的帮助Louis。我有一段时间没练习Python,但不记得有过这个问题。我添加了一个简单的方法来生成我的代码布局,如果你想尝试 – marchelbling
对不起,我想昨天我意外地在我创建的模拟层次结构上运行了'nosetests',而不是'python'。习惯的力量。我已经更新了答案。 – Louis
好吧,当我说把PYTHONPATH传递给python命令不起作用时,我只是很傻。一个进口只是失踪。你说得对,鼻子就是最好的解决方案。 – marchelbling