【问题标题】:Flask - Can't import app inside test fileFlask - 无法在测试文件中导入应用程序
【发布时间】:2020-06-22 16:02:42
【问题描述】:

我正在尝试为我制作的烧瓶应用程序编写一些单元测试。项目设置如下:

apiproject (parent folder containing everything)
 /venv
 run.py
 requirements.txt
 /project
   __init__.py
   /departments
     __init__.py
     routes.py
     models.py
   /users
     __init__.py
     routes.py
     models.py
   /tests
     TestUsers.py

运行.py:

from project import app


if __name__ == '__main__':
    app.run(debug=True)

我的实际应用是在 project/init.py

下创建的
from flask import Flask, jsonify, Response
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
import os
from dotenv import load_dotenv
from flask_cors import CORS

load_dotenv(verbose=False)

DB_URL = os.getenv("DATABASE_URL")

# initialize the application
app = Flask(__name__)

在我的 TestUsers.py 我有这个:

import json
from project import app
import unittest
from dotenv import load_dotenv
load_env(verbose=False)

class TestUsers(unittest.TestCase):

    def setUp(self):
        self.app = app
        self.url_prefix = prefix = os.getenv("URL_PREFIX")
        self.client = self.app.test_client()
    
    def test_index(self):
        response = self.client.get(self.url_prefix + '/')
        self.assertEqual(response.status_code, 200)

   if __name__ == '__main__':
       unittest.main()

当我运行 TestUsers.py 时,我得到 ModuleNotFoundError: No module named 'project'。我尝试在 TestUsers.py 中执行 sys.path.append('../') 和 ../../,但这没有帮助。

【问题讨论】:

  • /project 模块中移动测试。供参考flask.palletsprojects.com/en/1.1.x/tutorial/layout
  • 那没用 :(
  • 对不起,我的意思是将其移出并使用相对路径。我相信这会奏效
  • 将文件路径添加到系统路径。您可以在测试文件的顶部执行此操作

标签: python flask python-unittest


【解决方案1】:

在 TestUsers.py 中,在导入应用之前:

https://stackoverflow.com/a/22737042/7858114

【讨论】:

    【解决方案2】:

    我认为您的 apiproject 文件夹中也需要一个 init.py。

    【讨论】:

      猜你喜欢
      • 2022-06-14
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多