Py.test没有名为*的模块

时间:2014-01-08 01:03:05

标签: python pytest

我有像这样的文件夹结构

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

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

8 个答案:

答案 0 :(得分:31)

我已经在__init__.py目录中有一个/App/App文件,并希望从项目根目录运行测试,而不需要任何路径错误的魔法:

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

答案 1 :(得分:30)

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

$ touch tests/__init__.py

我在打包和导入方面不是很出色,但我认为这有助于pytest找出目标App模块所在的位置。

答案 2 :(得分:12)

所以你从py.test开始运行/App。您确定/App/App中有$PYTHONPATH吗?

如果不是,则尝试import app的代码将失败并显示此消息。

EDIT0:包括以下评论中的信息,以确保完整性。

导入应用程序的尝试只有在/App/App内执行时才会成功,这不是这里的情况。您可能希望将/App/App放入其中,并将__init__.py更改为from App import app

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

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

答案 3 :(得分:7)

我遇到类似的问题,不得不从根目录中删除<div class="buttons--off-canvas"> <a class="close--off-canvas" href="#"> <i class="icon--arrow-left"></i> Zurück </a> </div> <div class="content--description"> <div class="product--description"> {$sArticle.clp_info_tab} </div> </div> 并将__init__.py添加到__init__.py文件夹中。

答案 4 :(得分:2)

使用 pytest 命令运行 python -m pytest 有助于解决这个问题。

由于您当前的包尚未在您的 $PYTHONPATHsys.path 中 - pytest 收到此错误。

通过使用 python -m pytest,您会自动将工作目录添加到 sys.path 中以运行 pytest。他们的文档还提到:

<块引用>

这几乎相当于调用命令行脚本pytest

答案 5 :(得分:1)

在如下所示运行我的应用的测试用例时,我也遇到了相同的错误

myproject
  --app1
    --__init.py__
    --test.py
  --app2
    --__init.py__
    --test.py
  --__init.py__

我删除了 myproject的 __ init.py __ 文件,并且开始运行测试用例。

答案 6 :(得分:1)

我遇到了类似的问题。在尝试了多种操作之后,包括在虚拟环境上安装pytest以及从软件包中添加/删除__init__.py文件,都没有一个适合我。

对我有用的解决方案是(Windows解决方案): 已将Project文件夹(而非软件包文件夹)添加到python路径(设置PYTHONPATH =%PYTHONPATH%;%CD%)

从Project Folder运行我的脚本,然后开始运行。

答案 7 :(得分:0)

这对我有用: 转到父应用,然后pip install -e .(安装本地可编辑应用)。