我刚刚发现 nose 不会运行标记为可执行的测试的行为(如 a previous question 中所述)。我发现这令人惊讶,在我了解 nose 的行为之前,我浪费了一些时间试图找出为什么 nose 没有运行我的测试。
在 nosetests 的联机帮助页中,它描述了一个覆盖默认行为的选项:
--exe Look for tests in python modules that are executable.
Normal behavior is to exclude executable modules,
since they may not be import-safe [NOSE_INCLUDE_EXE]
我的问题是:“导入安全”是什么意思?什么是非导入安全模块的示例?是否可以通过删除可执行位来使非导入安全模块成为导入安全模块,还是除此之外还有更多?
最佳答案
我不熟悉 nose,但我很确定“导入安全”的意思是导入模块只会定义东西,而不是开始运行东西。
想法是,如果 .py 文件被设计为作为脚本执行,那么它的功能将在执行模块范围代码时启动。这可以防止使用 __name__ == '__main__'
技巧导入,但它可能不是。如果不是,导入它可能会执行与不带参数调用时作为脚本执行的相同操作,这在某些情况下可能很糟糕。
因此,您可以通过传递 --exe
标志明确地告诉 nose 没有这样的可执行脚本导入是危险的,或者您可以清除脚本的可执行权限。
关于python - "import safe"在 Python 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10330499/