我有一个文件夹,里面有我所有的单元测试。它们都包括:
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())
所以为了测试它们,我只需要导入测试脚本。我有一个test-unall脚本,它通过一个接一个地导入单元测试来完成所有的单元测试。当前如下所示:
^{pr2}$这意味着每当我添加或删除一个新的测试时,我都需要更改导入。所以我想用
^{3}$但是,这不会运行任何代码。为什么我不输入代码。 另外,如果有人知道一个解决方案(即note nose)来运行所有的单元测试,而不必逐个导入它们,这将是非常好的。在
谢谢
尼克
如果使用python 2.7,则可以使用命令行:
这将自动查找并执行所有子目录中的所有测试。有关更多选项,请参见:
^{pr2}$这个模块已经后传到Python2.3+,可以下载here。如果使用后台端口,则包含一个名为unit2或unit2.py(您可以选择)的命令行脚本,调用方式如下:
至于
from XXX import *
,这实际上导入了文件XXX/__init__.py
名称空间中的所有内容。将以下代码放入__init__.py
中以自动加载任何直接子模块:有关如何工作的详细说明可以在python docs for the ^{} global variable 中找到。在
对于解释器正在读取的初始python文件,
__name__
仅设置为"__main__"
。这允许在执行if __name__ == "__main__":
之后由其他模块导入模块,而不需要代码。在任何不受
if __name__ == "__main__":
保护的代码都将被执行。所以您可以在每个文件中删除它,然后当您执行导入操作时,unittest.TextTestRunner(verbosity=2).run(suite())
将被执行。在更好的方法是使用
unittest.TestLoader()
中的方法将测试加载到一个套件中,然后将该套件交给unittest.TextTestRunner
。这样,就可以自动化加载程序,而无需更改测试文件中的导入。在目录结构中添加一个测试文件,测试将自动执行。在运行所有测试的最简单方法(不使用外部工具)可能是使用TestLoader.discover。在
相关问题 更多 >
编程相关推荐