我只是遇到了 Nose 不会运行标记为可执行的测试的行为(如 a previous question 中所述)。我发现这很令人惊讶,在了解 Nose 的行为之前,我浪费了一些时间试图找出为什么 Nose 没有运行我的测试。

在 Nose 测试的联机帮助页中,它描述了一个覆盖默认行为的选项:

--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/

10-12 21:15