我对Python(2.7)模块和它有点生锈。包所以我希望能找到一些帮助。我正在用硒写一些测试。我想通过“scenario系列”组织测试,我想实现一个帮助器类来处理一些样板,它将成为我所有测试的基类。 基本上我想要一个看起来像这样的结构:
.
├── 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
这会产生以下带有空dummy/
├── tests
│ ├── __init__.py
│ └── user
│ ├── __init__.py
│ └── upload.py
└── utils
├── __init__.py
└── base.py
文件的树以及我试图在tests / user / upload.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
>>>
但如果我以交互方式运行它显然没有问题:
(env) dummy $ PYTHON_PATH=. python tests/user/upload.py
我的问题一定很傻但我看不出我做错了什么。而我还没有得到的是指定python路径({{1}})并不能解决问题。
答案 0 :(得分:0)
您可以设置PYTHONPATH来搜索当前目录:
PYTHONPATH=. python tests/user/upload.py
或者您可以使用测试运行器,如鼻子:
nosetests tests/user/upload.py
如果您不想使用nose,也可以创建自己的测试运行器。例如,runtests.py
文件包含:
import unittest
from tests.user.upload import *
unittest.main()
然后:
python runtests.py
此测试运行器可以导入更多测试,或者可以选择导入哪些测试。最后,我建议使用nose来编写自己的测试运行器。
在层次结构顶部启动测试运行器是有效的,因为Python将脚本的当前目录添加到它搜索模块的路径列表中。