Python dir()不显示包中的所有模块

时间:2011-08-25 16:21:49

标签: python unit-testing module dir

我正在使用python 2.6,我看到dir()函数有点怪异的行为。我正在尝试从目录/包中导入所有模块以进行单元测试,但是当我对该文件夹执行dir()时,我没有 all 该目录中的模块。

示例目录结构:

|-mod_dir\
|---__init__.py
|---modA.py
|---modB.py
|---modC.py
|
|-mod_tests\
|---__init__.py
|---test.py

示例test.py:

import mod_dir

for obj in dir(mod_dir):
   print obj

不幸的是,在这一点上我只得到类似的东西:

modA
__all__
__builtins__
__doc__
__file__
__name__
__package__
__path__

关于为什么其他人没有出现在这里的任何想法?我认为这不重要,但mod_dir中的__init__.py文件为空。我已经尝试设置__all__变量,但它没有效果。但是,如果它确实重要,我在WinXp中使用它与eclipse中的pydev。

上下文

mod_dir下的每个模块都有一个unittest,我试图将它们包含在test.py中的unittest套件中。我知道鼻子和其他方法,如this,但我更感兴趣的是为什么dir没有显示所有内容。

1 个答案:

答案 0 :(得分:3)

我认为__init__.py文件为空是很重要的。

__init__.py

中尝试此操作
import modA
import modB
import modC

来自python文档,dir should not be used for this(请参阅dir部分底部的注释)。它不够严谨,主要用于交互式提示。