【问题标题】:ModuleNotFoundError: No module named 'app' when trying to create a Test using Pytest and Flask on Windows virtual enviromentModuleNotFoundError:在 Windows 虚拟环境中尝试使用 Pytest 和 Flask 创建测试时没有名为“app”的模块
【发布时间】:2020-03-29 01:29:53
【问题描述】:

我正在尝试使用 Flask Test tutorial 为我的 Flask 应用程序创建一个测试,但是当我使用 pytest 运行测试时,它会引发以下错误:

Hint: make sure your test modules/packages have valid Python names.
Traceback:
test\test_flask.py:6: in <module>
    from app import app
E   ModuleNotFoundError: No module named 'app'

我正在使用 Windows 10、flask 应用程序的虚拟环境和 Python 3.8。我该如何解决这个问题?

我的项目结构是:

test_flask.py:

import os
import tempfile

import pytest

from app import app

@pytest.fixture
def client():
    db_fd, app.config['DATABASE'] = tempfile.mkstemp()
    app.config['TESTING'] = True

    with app.app.test_client() as client:
        with app.app.context():
            app.init_db()
        yield client

    os.close(db_fd)
    os.unlink(app.app.config['DATABASE'])

init.py:

from flask import Flask, request, jsonify
from config import Config
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from werkzeug.security import generate_password_hash, check_password_hash
from flask_jwt_extended import (
    JWTManager, jwt_required, create_access_token,
    get_jwt_identity
)
from flask_cors import CORS

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
jwt = JWTManager(app)
CORS(app)
app.config['CORS_HEADERS'] = 'Content-Type'


from app import routes, models

mymanhualist.py:

from app import app

【问题讨论】:

    标签: python windows flask


    【解决方案1】:

    我已经解决了在项目的根目录中创建一个 setup.py 并构建我的包以便测试目录可以访问应用程序包的问题。

    setup.py:

    import setuptools
    
    with open("README.md", "r") as fh:
        long_description = fh.read()
    
    setuptools.setup(
        name="appPackage-YourUser", 
        version="0.0.1",
        author="Your Name",
        author_email="yourownemail@email.com",
        description="",
        long_description=long_description,
        long_description_content_type="text/markdown",
        url="https://github.com/luturol/MyManhuaListAPI",
        packages=setuptools.find_packages(),
        classifiers=[
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: MIT License",
            "Operating System :: OS Independent",
        ],
        python_requires='>=3.6',
    )
    

    刚刚运行后:

    pip install -e .
    

    这个链接帮我解决了这个问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2020-08-17
      • 2023-03-15
      • 1970-01-01
      • 2018-01-29
      • 2020-07-31
      相关资源
      最近更新 更多