Пытаюсь запустить базовый c функциональный тест с pytest- flask, но продолжаю получать эту ошибку:
tests/conftest.py:2: in <module>
from learning_flashcards import create_app
E ImportError: cannot import name 'create_app'
Вот моя структура каталогов:
.
├── Procfile
├── __pycache__
├── config.py
├── learning_flashcards
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-36.pyc
│ │ ├── app.cpython-36.pyc
│ │ └── views.cpython-36.pyc
│ ├── app.py
│ ├── db.py
│ ├── models.py
│ ├── static
│ │ └── style.css
│ ├── templates
│ └── views.py
├── learning_flashcards.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ ├── requires.txt
│ └── top_level.txt
├── manage.py
├── migrations
│ ├── README
│ ├── alembic.ini
│ ├── env.py
│ ├── script.py.mako
│ └── versions
├── requirements
│ ├── common.txt
│ ├── dev.txt
│ └── runtime.txt
├── requirements.txt
├── setup.py
├── tests
│ ├── __pycache__
│ │ ├── conftest.cpython-36-pytest-5.4.3.pyc
│ │ ├── test_data.cpython-36-pytest-5.4.3.pyc
│ │ └── test_site.cpython-36-pytest-5.4.3.pyc
│ ├── conftest.py
│ ├── test_data.py
│ └── test_site.py
└── venv
И вот мой файл conftest.py:
import pytest
from learning_flashcards import create_app
@pytest.fixture
def app():
app = create_app()
return app
Пробовали различные способы изучения системы импорта (из .learning_flashcards, из .learning_flashcards.learning_flashcards и др. c.), также исследовали файл инициализации чтобы увидеть, правильно ли он создает экземпляр приложения, но, похоже, все в порядке. Приложение работает на локальном сервере, но не может заставить работать набор тестов.
Вот init .py:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
import learning_flashcards.views
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres@localhost/flashcards'
db = SQLAlchemy()
И app.py:
from flask import Flask
from models import db
def create_app():
app = Flask(__name__)
db.init_app(app)
@app.route('/')
def learning_flashcards():
return "Hello World!"
POSTGRES = {
'user': 'postgres',
'pw': 'password',
'db': 'my_database',
'host': 'localhost',
'port': '5432',
}
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://%(user)s:%(pw)s@%(host)s:%(port)s/%(db)s' % POSTGRES
return app
if __name__ == '__main__':
app = create_app()
app.run()