在python flask应用程序中进行单元测试时如何避免装饰器 - python

我是python和flask的新手。我想为编写的api创建单元测试。我们已经使用jwt进行身份验证。

为了进行单元测试,我不想让流程进入@jwt_required装饰器。除此之外,我还为该方法链接了其他一些装饰器。

class A():

   @jwt_required()
   @mandatory_fields_check
   @unlock_and_lock()
   def get(self, address, name): 
      ..
      ..
      ..
       return jsonify(
            {"payload": data,
             "message": "data received successfully"}), 200

我正在尝试编写单元测试

def test_get():
   a_obj = A()
   a_obj.get("address123", 'xyz')

当我使用py.test运行以上测试时,出现运行时错误

    def _find_app():
            top = _app_ctx_stack.top
            if top is None:
               raise RuntimeError(_app_ctx_err_msg)
     RuntimeError: Working outside of application context.
E
E           This typically means that you attempted to use functionality that needed
E           to interface with the current application object in some way. To solve
E           this, set up an application context with app.app_context().  See the
E           documentation for more information.

以下是我的目标:

我不希望流程进入装饰器逻辑
Jwt装饰器正在请求上下文。但是,我的目的是将该方法作为没有任何烧瓶功能的常规类方法进行单元测试。
如何模拟在被测方法内部创建的对象?

参考方案

based on the description here

应该是这样,但未经测试。

import mock
def mock_jwt_required(realm):
    return

@mock.patch('flask_jwt.jwt_required', side_effect=mock_jwt_required)
def test_get(jwt_required_fn):
    a_obj = A()
    a_obj.get("address123", 'xyz')

在python 3中使用单引号和双引号时出错 - python

使用os.system()函数时,我在python中遇到了EOL错误。以下是代码行生成错误:os.system("cat subdomains.txt | cut -d'"' -f1 ") 基本上,我试图使用分号[“]修改输出字符串(双引号) 参考方案 如果需要在带"的字符串中编写",则可…

在Python Cloud Function中使用错误处理程序返回JSON - python

我将Python用于HTTP Cloud Function,并希望将默认错误处理程序设置为返回JSON而不是HTML。from flask_expects_json import expects_json import payment_orders_schema from flask import jsonify, Flask schema = paymen…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

在python lxml prettyprint中更改标签间距 - python

我有一个小的脚本,可以创建xml文档,并使用prettyprint=true可以创建格式正确的xml文档。但是,制表符的缩进是2个空格,我想知道是否有办法将其更改为4个空格(我认为4个空格看起来更好)。有没有简单的方法来实现这一目标?程式码片段:doc = lxml.etree.SubElement(root, 'dependencies'…

python-docx应该在空单元格已满时返回空单元格 - python

我试图遍历文档中的所有表并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。我在类似的帖子中已经看过scanny提供的其他代码,但是由于某种原因,它并没有提供我正在解析的文档的预期输出可以在https://www.ontario.ca/laws/regulation/140300中找到该文档from docx import Document from…