【问题标题】:Nosetest & import鼻子测试和导入
【发布时间】:2012-09-04 09:56:22
【问题描述】:

我对 Python 还是很陌生。目前我正在试用 PyCharm,但在运行测试时遇到了一些我无法解释的奇怪行为。

我目前正在处理的项目位于一个名为 PythonPlayground 的文件夹中。此文件夹包含一些子目录。每个文件夹都包含一个 init.py 文件。一些文件夹包含鼻子测试。

当我从项目目录中的命令行使用nosetest runner 运行测试时,我必须将“PythonPlayground”放在我所有本地导入的前面。例如。在“ui”文件夹中导入名为“model”的模块时,我必须像这样导入它:

从 PythonPlayground.ui.model 导入 *

但是当我从 Pycharm 内部运行测试时,我必须再次删除前导的“PythonPlayground”,否则测试不起作用。像这样:

从 ui.model 导入 *

我也在尝试模拟框架,由于某种原因,这个框架总是需要模块的完整名称(包括“PythonPlayground”)。不管我是从命令行还是从 PyCharm 内部运行测试:

用补丁('PythonPlayground.ui.models.User')作为模拟:

有人可以向我解释行为上的差异吗?正确的行为是什么?

【问题讨论】:

    标签: python pycharm nose


    【解决方案1】:

    我认为这是因为 PyCharm 有自己的解释器“副本”,它有自己的 sys 路径版本,您将项目的根设置为比 PythonPlayground 目录低一级。 你可以在你的项目中找到 PyCharm 中解释器的偏好并设置适当的顶层。 附言。我有同样的问题,但在 Eclipse + pydev 中

    【讨论】:

    • 这似乎是正确的,正如this 答案所建议的那样。
    • 这确实是正确的。将我的源文件移动到一个名为“src”的目录,并在项目设置中将此目录标记为源目录,解决了问题:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2015-08-21
    相关资源
    最近更新 更多