用于selenium测试的Python项目结构

时间:2014-02-05 21:35:44

标签: python testing selenium

我对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}})并不能解决问题。

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将脚本的当前目录添加到它搜索模块的路径列表中。