繁体   English   中英

Nosetest和进口

[英]Nosetest & import

我对Python很陌生。 目前,我正在尝试PyCharm,并且遇到一些奇怪的行为,在运行测试时无法解释。

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

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

从PythonPlayground.ui.model导入*

但是,当我从Pycharm内部运行测试时,必须再次删除领先的“ PythonPlayground”,否则测试将无法正常工作。 像这样:

从ui.model import *

我也在尝试模拟框架,由于某种原因,该框架始终需要模块的完整名称(包括“ PythonPlayground”)。 无论是从命令行还是从PyCharm内部运行测试,都没有关系:

使用patch('PythonPlayground.ui.models.User')作为模拟:

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

我认为发生这种情况是因为PyCharm具有自己的解释器“副本”,这些解释器具有其自己的sys路径版本,您在其中将项目的根目录设置为比PythonPlayground目录低一级的目录。 您可以在您的项目的PyCharm中找到解释器的首选项,并设置适当的最高级别。 ps。 我有同样的问题,但是在Eclipse + pydev中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM