当前位置: 首页 > 面试题库 >

RuntimeError:在应用程序上下文之外工作

水瀚漠
2023-03-14
问题内容

app.py

from flask import Flask, render_template, request,jsonify,json,g
import mysql.connector

app = Flask(__name__)
**class TestMySQL():**
  @app.before_request
  def before_request():
    try:
       g.db = mysql.connector.connect(user='root', password='root', database='mysql')
    except mysql.connector.errors.Error as err:
      resp = jsonify({'status': 500, 'error': "Error:{}".format(err)})
      resp.status_code = 500
      return resp
@app.route('/')
def input_info(self):
    try:     
        cursor = g.db.cursor()
        cursor.execute ('CREATE TABLE IF NOT EXISTS testmysql (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(40) NOT NULL, \
                 email VARCHAR(40) NOT NULL UNIQUE)')
        cursor.close()

test.py

from app import *
class Test(unittest.TestCase):         
 def test_connection1(self):  
   with patch('__main__.mysql.connector.connect') as  mock_mysql_connector_connect:
   object=TestMySQL()
   object.before_request()  """Runtime error on calling this"

我正在将 应用程序 导入到 test.py中 以进行单元测试。在将’ before_request
‘函数调用到test.py中时,它会抛出RuntimeError:在应用程序上下文之外工作同样会在调用’ input_info() ‘时发生


问题答案:

Flask有一个Application
Context
,似乎您需要执行以下操作:

def test_connection(self):
    with app.app_context():
        #test code

您可能还可以将app.app_context()调用推入测试设置方法中。希望这可以帮助。



 类似资料:
  • 问题内容: 我有一个像这样的应用程序工厂 然后,我有一个脚本,可以在应用程序上下文之外获取CSV。该脚本是一个cron,每x小时运行一次 我想以某种方式更新应用程序正在使用的sqlite数据库。这可能吗? 问题答案: Flask-SQLAlchemy只需要一个应用程序上下文即可运行。您可以手动创建应用上下文。 这来自这里和这里的文档。

  • 设置如下--我有一个定时任务,它将发送验证电子邮件,以便用户: 如果我可以在这里设置thymeleaf模板解析器来处理这些链接,也会有所帮助,但为此我需要,它需要的实例。

  • 问题内容: 我有一个Spring应用程序,到目前为止运行良好。现在,我希望属性文件位于外部配置文件夹中,而不是在打包的jar中,而无需重新打包即可更改内容。这就是我得到的: 问题答案: 如果将其放置在名为spring的目录中的类路径中的某个位置(相应地更改名称/目录),则可以使用 这将指向web-inf / classes / config / springcontext.properties

  • 我多年来一直在使用Spring MVC,我试图理解与Spring Boot的一些关键区别。 你能帮我确认一下吗?或者让我明白我在这里遗漏了什么?

  • 我定义了一个bean在Spring上下文文件'Application ationContext.xml'如下所示: 在我的服务类(ServiceImpl)中,我使用如下bean: 正在从JUnit测试类访问我的服务类。 当我执行测试用例时,它会给出错误提示: 创建名为“ServiceImpl”的bean时出错:自动连线依赖项的注入失败;嵌套的异常是org。springframework。豆。工厂B

  • Spring Boot对于如何使用Spring构建应用程序有一个看法:例如它具有常规配置文件的常规位置,以及用于常见管理和监视任务的端点。Spring Cloud建立在此之上,并添加了一些可能系统中所有组件将使用或偶尔需要的功能。 引导应用程序上下文 一个Spring Cloud应用程序通过创建一个“引导”上下文来进行操作,这个上下文是主应用程序的父上下文。开箱即用,负责从外部源加载配置属性,还解