swi*_*end 47 python python-import pytest flask
该py.test
命令未能在我的情况,而pytest
运行完全正常.
我使用pytest-flask插件:
platform linux -- Python 3.5.2, pytest-3.0.2, py-1.4.31, pluggy-0.3.1
rootdir: /home/sebastian/develop/py/flask-rest-template, inifile:
plugins: flask-0.10.0
Run Code Online (Sandbox Code Playgroud)
当我调用时,$ py.test
我收到以下错误:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 301, in _getconftestmodules
return self._path2confmods[path]
KeyError: local('/home/sebastian/develop/py/flask-rest-template')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 332, in _importconftest
return self._conftestpath2mod[conftestpath]
KeyError: local('/home/sebastian/develop/py/flask-rest-template/conftest.py')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 338, in _importconftest
mod = conftestpath.pyimport()
File "/usr/local/lib/python3.5/dist-packages/py/_path/local.py", line 650, in pyimport
__import__(modname)
File "/usr/local/lib/python3.5/dist-packages/_pytest/assertion/rewrite.py", line 207, in load_module
py.builtin.exec_(co, mod.__dict__)
File "/home/sebastian/develop/py/flask-rest-template/conftest.py", line 2, in <module>
from app.app import create_app
File "/home/sebastian/develop/py/flask-rest-template/app/app.py", line 1, in <module>
from flask import Flask
ImportError: No module named 'flask'
ERROR: could not load /home/sebastian/develop/py/flask-rest-template/conftest.py
Run Code Online (Sandbox Code Playgroud)
这是我的实际conftest.py
文件:
import pytest
from app.app import create_app
@pytest.fixture
def app():
app = create_app()
return app
Run Code Online (Sandbox Code Playgroud)
我的项目结构如下:
.
??? app
? ??? __init__.py
? ??? app.py
? ??? config.py # flask configuration objects
??? conftest.py # pytest configruation
??? requirements.txt
??? ...
??? tests
??? ...
Run Code Online (Sandbox Code Playgroud)
那么,这两个命令有什么区别?为什么一个失败而另一个失败?
更新1
1)我不得不改变我的相对进口from .config import Config
或from config import Config
绝对的进口from app.config import Config
2)用烧瓶运行 python3 -m app.app
3)现在pytest
和py.test
工作正常
伙计们,非常感谢你们的帮助!
更新2
这很奇怪......当使用绝对导入时,运行带有-m
选项和烧瓶的python ,debug=True
然后werkzeug
库没有按预期重新加载源:
http://chase-seibert.github.io/blog/2015/06/12/flask-werkzeug-reloader-python-dash-m.html
https://github.com/pallets/werkzeug/issues/461
https://github.com/pallets/flask/issues/1246
这有助于我app/app.py
:
if __name__ == '__main__':
app.run(debug=True, use_reloader=False)
Run Code Online (Sandbox Code Playgroud)
然后python -m app.app
工作正常.
Oli*_*ter 58
要更详细地回答关于实际命令的问题(意味着在命令行上调用工具):
该py.test
调用是老捣毁联合.pytest
是新的热点(从3.0开始).py.test
并pytest
调用会共存很长一段时间我猜想,但在某些时候py.test
可能会被弃用.所以我建议#dropthedot.
[...]所以从pytest 3.0我们将支持并建议使用pytest作为主命令而不是py.test.将来我们可能会弃用py.test甚至可能删除它.
- 戴夫亨特
向后兼容性对于pytest社区来说是一个非常重要的问题,因此旧的方式可能永远不会消失,无论如何都要保持它的维护负担(它只是定义为setup.py中的不同入口点).
归档时间: |
|
查看次数: |
12839 次 |
最近记录: |