如何在目录中的所有测试上运行twisted试用版?

时间:2011-09-26 20:43:32

标签: python twisted trial

如何运行试用版以便在目录中执行所有测试?如果我单独对每个文件运行试验,我的所有单元测试都会通过,但如果我尝试类似......

trial test/
在测试目录上的

,它给了我一个“PASSED”,以及以下消息......

UserWarning:  (for module __init__) not in path importer cache (PEP 302 violation
    - check your local configuration).

而不是实际运行目录中的所有测试。

1 个答案:

答案 0 :(得分:5)

首先:您无法调用顶级单元测试包test。这是Python的单元测试的名称,因此您永远无法在已安装的配置中运行测试,并且根据您的python的设置方式,您可能最终导入python自己的测试而不是您自己的测试。

第二:sys.path是一个巨大而微妙的谜团。

trial支持在文件和目录上运行,作为一个快速入门的黑客攻击,但使用路径名称永远不会完全正确。正确的做法是通过试用一个模块(或包)名称,它可以作为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目录,混淆“我加载代码的地方”和“当前目录”,并且通常会混淆各种难以解决的事情。

所以,使用您选择的路径管理工具设置PYTHONPATHPATHCombinatorsetup.py developvirtualenv - 或只是转储垃圾进入你的~/.bashrc - 然后从一个临时位置运行trial,在一个名字独特的顶级Python包上运行,一切都应该正常工作。