Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 烧瓶测试-测试失败的原因_Python_Flask_Flask Testing - Fatal编程技术网

Python 烧瓶测试-测试失败的原因

Python 烧瓶测试-测试失败的原因,python,flask,flask-testing,Python,Flask,Flask Testing,我正在尝试为一个简单的Flask应用程序编写测试。项目结构如下: app/ static/ templates/ forms.py models.py views.py migrations/ config.py manage.py tests.py tests.py import unittest from app import create_app, db from flask import current_app from flask.ext.te

我正在尝试为一个简单的Flask应用程序编写测试。项目结构如下:

app/
    static/
    templates/
    forms.py
    models.py
    views.py
migrations/
config.py
manage.py
tests.py
tests.py

import unittest
from app import create_app, db
from flask import current_app
from flask.ext.testing import TestCase

class AppTestCase(TestCase):
    def create_app(self):
        return create_app('test_config')

    def setUp(self):
        db.create_all()

    def tearDown(self):
        db.session.remove()
        db.drop_all()

    def test_hello(self):
        response = self.client.get('/')
        self.assert_200(response)
app/init.py

# app/__init__.py

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from config import config

db = SQLAlchemy()

def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    db.init_app(app)
    return app

app = create_app('default')

from . import views

当我启动测试时,test_hello失败,因为response.status_代码是404。请告诉我,我怎样才能修好它?看起来,该应用程序实例对views.py中的视图函数一无所知。如果需要完整的代码,可以在
视图.py
文件中找到它。在
应用程序中挂载在
初始化.py
文件中创建的路由

您必须在
create\u app
测试方法中将这些路由绑定到您创建的应用

我建议你改变这种依赖关系。相反,您可以使用
views.py
导入您的代码,创建一个
init\u应用程序
,从您的
\uuuu init\uuuu.py
或测试文件中导入和调用

# views.py
def init_app(app):
    app.add_url_rule('/', 'index', index)
    # repeat to each route
你可以做得更好,使用一个


这样,您的测试文件就可以导入这个
init\u app
,并将blueprint绑定到测试
app
对象。

如果我使用blueprints,在我的情况下,最好在create\u app函数中注册blueprints?是的,blueprint是处理路由的最佳方法
def init_app(app):
    app.register_blueprint(blueprint)