尝试导入给定根目录下的所有模块
import_all的Python项目详细描述
项目中的三行单元测试将自动导入 其中的每个python文件和模块,可以选择测试警告。
为什么?
不是每个文件都包含在单元测试中;单元测试不会报告任何新的 出现的警告。
import_all是一个单独的文件库,它有一个自动执行的单元测试 导入项目中的每个python文件和模块。
我把include_all放入每个新项目中。它需要几秒钟,这是不可避免的 早期发现很多愚蠢的问题,而且不需要维护。
如何使用import_all
用pip install import_all安装,并通过添加 this tiny file (raw) 项目中的任何位置-看起来如下:
importimport_allclassImportAllTest(import_all.ImportAllTest):pass
大多数时候你只需要这些。
重写属性
ImportAllTest有八个可重写的属性。
- ALL_SUBDIRECTORIES: Whether to search all subdirectories
- CATCH_EXCEPTIONS: Catch all exceptions and report at the end
- EXCLUDE: Which modules to exclude
- EXPECTED_TO_FAIL: Which modules are expected to fail
- INCLUDE: Which modules to exclude
- PROJECT_PATHS: Roots for searching subdirectories
- SKIP_PREFIXES: Skip subdirectories that start with these prefixes
- WARNINGS_ACTION: What to do on warnings
每个属性的完整文档是here。
要永久重写测试属性,请在派生类中设置它,如 这个:
importimport_allclassImportAllTest(import_all.ImportAllTest):WARNINGS_ACTION='error'
若要临时重写测试属性,请在 运行测试,如下所示:
$ _IMPORT_ALL_WARNINGS_ACTION=error pytest
使用import_all.py作为独立程序
文件import_all.py是可执行的,安装在路径中 pip。您可以在正在评估或调试的项目中使用它 像这样:
$ import_all.py [directory ..directory]
如果未指定目录,则使用当前目录。
为了方便起见,可以使用环境变量设置上述属性 每个属性也有命令行标志,因此您可以编写:
$ import_all.py --catch_exceptions --all_directories --exclude=foo/bar