我对 Python 很陌生。目前我正在尝试 PyCharm 并且遇到了一些我在运行测试时无法解释的奇怪行为。
我目前正在处理的项目位于一个名为 PythonPlayground 的文件夹中。此文件夹包含一些子目录。每个文件夹都包含一个init .py 文件。一些文件夹包含nosetest 测试。
当我从项目目录中的命令行使用nosetest runner 运行测试时,我必须将“PythonPlayground”放在所有本地导入的前面。例如,在“ui”文件夹中导入名为“model”的模块时,我必须像这样导入它:
从 PythonPlayground.ui.model 导入 *
但是当我从 Pycharm 内部运行测试时,我必须再次删除前导的“PythonPlayground”,否则测试不起作用。像这样:
从 ui.model 导入 *
我也在尝试模拟框架,由于某种原因,这个框架总是需要模块的完整名称(包括“PythonPlayground”)。我是从命令行还是从 PyCharm 内部运行测试都没有关系:
用 patch('PythonPlayground.ui.models.User') 作为模拟:
有人可以向我解释行为上的差异吗?什么是正确的行为?