首先:你不能调用你的顶级单元测试包test
。这是 Python 单元测试的名称,因此您将永远无法在已安装的配置中运行测试,并且根据您的 Python 设置方式,您最终可能会导入 Python 自己的测试而不是您自己的测试。
第二:sys.path
是一个浩瀚而微妙的奥秘。
trial
支持在文件和目录上运行作为快速入门 hack,但使用路径名永远不会完全正确。正确的做法是传递一个模块(或包)名称,它可以作为 python 模块导入并检查。
因此,如果您的目录结构如下所示:
~/Projects/MyProject/
~/Projects/MyProject/myproject/
~/Projects/MyProject/myproject/__init__.py
~/Projects/MyProject/myproject/stuff.py
~/Projects/MyProject/myproject/test/
~/Projects/MyProject/myproject/test/__init__.py
~/Projects/MyProject/myproject/test/test_stuff.py
那么你应该像这样运行你的测试:
PYTHONPATH=$HOME/Projects/MyProject (cd /tmp; trial myproject.test)
换句话说,不要从项目目录中运行测试;这会在您的源代码中转储 _trial_temp 目录,混淆“我从中加载代码的位置”和“当前目录”,并且通常会使各种事情变得混乱,以后可能难以解开。
因此,设置PYTHONPATH
并PATH
使用您选择的路径管理工具:Combinator、setup.py develop、virtualenv - 或者只是将垃圾转储到您的~/.bashrc
- 然后trial
从某个临时位置运行,在一个唯一命名的顶级 Python 包上,一切都应该正常工作。