Py.test没有命名的模块*

2024-04-28 20:16:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的文件夹结构

App
--App
  --app.py       
--Docs
--Tests
  --test_app.py

在我的test_app.py file中,我有一行代码要导入我的应用程序模块。当我在根文件夹上运行py.test时,我得到一个关于没有名为app的模块的错误。我应该如何配置?


Tags: 模块代码pytest文件夹appdocs错误
3条回答

使用Python 3并在类似的项目布局上获得相同的错误,我通过将__init__文件添加到我的tests模块来解决这个问题。

$ touch tests/__init__.py

我不擅长打包和导入,但我认为这有助于pytest确定目标App模块的位置。

我已经在/App/App目录中有一个__init__.py文件,并且希望从项目根目录运行测试,而不使用任何路径损坏魔法:

 python -m pytest tests

输出立即如下所示:

➟  python -m pytest tests
====================================== test session starts ======================================
platform linux -- Python 3.5.1, pytest-2.9.0, py-1.4.31, pluggy-0.3.1
rootdir: /home/andrew/code/app, inifile: 
plugins: teamcity-messages-1.17
collected 46 items 

... lines omitted ...

============================= 44 passed, 2 skipped in 1.61 seconds ==============================

所以您正在从/App运行py.test。你确定/App/App在你的$PYTHONPATH中吗?

否则,试图import app的代码将失败,并显示这样的消息。

EDIT0:为了完整起见,我在下面的评论中包含了这些信息。

只有在/App/App内部执行应用程序时,尝试导入应用程序才会成功,而这里不是这样。您可能希望通过将__init__.py放入/App/App包中来使/App/App成为一个包,并将您的导入更改为将应用程序限定为from App import app

EDIT1:根据请求,从下面的第二条评论中添加进一步的解释。

通过将__init__.py放入/App/App中,该目录将成为一个包。这意味着您可以从它导入,只要它-目录-在$PYTHONPATH中可见。一、 如果/App$PYTHONPATH中,您可以从App import app开始。您当前的工作目录将自动添加到$PYTHONPATH,因此当您从/App运行脚本时,导入将工作。

相关问题 更多 >