我有像这样的文件夹结构
App
--App
--app.py
--Docs
--Tests
--test_app.py
在我的test_app.py file
中,我有一行来导入我的app模块。当我在根文件夹上运行py.test时,我得到关于没有名为app的模块的错误。我该如何配置?
答案 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
有助于解决这个问题。
由于您当前的包尚未在您的 $PYTHONPATH
或 sys.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 .
(安装本地可编辑应用)。