简体   繁体   中英

Flask - Can't import app inside test file

I'm trying to write some unit tests for a flask application I made. The project is setup like this:

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

run.py:

from project import app


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

my actual app is created under 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__)

and in my TestUsers.py I have this:

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()

When I run TestUsers.py, I get ModuleNotFoundError: No module named 'project'. I tried doing sys.path.append('../') and../../ inside of TestUsers.py, but that didn't help.

inside TestUsers.py, before importing app:

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

I think you need an init .py in your apiproject folder too.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM