如何对 Flask 端点进行 pytest

2023-12-11

我开始使用 Flask 和 Pytest 来通过单元测试实现休息服务,但我遇到了一些麻烦。

我想为我的简单端点做一个简单的测试,但我不断得到一个Working outside of application context.运行测试时出错。

这是终点:

from flask import jsonify, request, Blueprint
STATUS_API = Blueprint('status_api', __name__)

def get_blueprint():
    """Return the blueprint for the main app module"""
    return STATUS_API


@STATUS_API.route('/status', methods=['GET'])
def get_status():
    return jsonify({
        'status' : 'alive'
    })

这就是我尝试测试它的方式(我知道它应该无法通过测试):

import pytest

from routes import status_api

def test_get_status():
    assert status_api.get_status() == ''

我猜我只是无法在不构建整个应用程序的情况下尝试该方法。但如果是这样的话我真的不知道如何解决这个问题


The Flask 测试文档还不错。

您应该创建一个所谓的视图函数,而不是导入视图函数test client,例如作为 pytest 固定装置。

对于我的最后一个 Flask 应用程序,它看起来像:

@pytest.fixture
def client():
    app = create_app()
    app.config['TESTING'] = True

    with app.app_context():
        with app.test_client() as client:
            yield client

(create_app是我的应用程序工厂)

然后您可以轻松创建测试,如下所示:

def test_status(client):
    rv = client.get('/stats')
    assert ...

正如一开始所提到的,官方文档真的很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 Flask 端点进行 pytest 的相关文章

随机推荐

  • 如何通过bundle发送对象

    我需要传递对通过包进行大部分处理的类的引用 问题是它与意图或上下文无关 并且具有大量非原始对象 如何将类打包成可打包 可序列化并将其传递给startActivityForResult 您还可以使用 Gson 将对象转换为 JSONObjec
  • querydsl生成的q源代码未正确导入

    我正在尝试将 querydsl 添加到现有系统 但在获取生成的 Q 源进行编译时遇到问题 我读过几个类似的问题和解释 https spring io blog 2015 09 04 what s new in spring data rel
  • Lucene 搜索匹配短语中的任何单词

    我想搜索包含很多单词的字符串 并检索与其中任何单词匹配的文档 我的索引方法如下 Document document new Document document add new TextField termos text Field Stor
  • 使用 GridF 从 mongoDB 读取和显示图像

    我已经能够使用 GridFs 成功将图像上传到 mongoDB 以下是我的数据库中的图像 fs 文件 fs 块 下面是我用来上传图片的代码 var Grid require gridfs stream var mongoose requir
  • Ionic 4. NavParams 的替代方案

    我正在使用 ionic 4 它不接受使用 navparams 接收数据 这是我的发件人页面方法 private route Router gotoFinalView intent this route navigateByUrl inten
  • 3 次划分的中位数

    我找到了以下代码 用于使用第一个 最后一个和中间元素的中值查找快速排序的枢轴 int middle low high 2 if a middle compareTo a low lt 0 swapReferences a low middl
  • 内核启动和内核执行之间的时间

    我正在尝试使用 VS 2010 的 Parallel Nsight 2 1 版本来优化我的 CUDA 程序 我的程序在带有 GTX 480 板的 Windows 7 32 位 机器上运行 我已经安装了 CUDA 4 1 32 位工具包和 3
  • 为什么 self.kill() 不从组中删除对象?

    我不久前问过这个问题 但答案并不完全有帮助 而且我不相信我发布了最小的可重现示例 一段时间 self lifetime 过去后 我试图杀死我的子弹 self kill 命令被执行 但它并没有从相机组中删除子弹 这就是我用来绘制所有子弹的 相
  • 从其他类对 WinForm 控件进行线程安全更新

    有人可以帮我解决以下问题吗 有两个类 MainForm 和 LWriter 下面是 LWriter 中的一个方法 除了写入文件之外 还向 RichTextBox 控件发送一些更新 通过 mainForm UpdateLog text 一切工
  • JavaScript 函数类似于 Python range()

    JavaScript 中是否有类似于 Python 的函数range 我认为应该有比每次都写以下几行更好的方法 array new Array for i 0 i lt specified len i array i i 对于 ES6 中非
  • 从提升的会话启动非提升的提示

    我有一些工具如果从提升的会话运行则无法工作 我正在运行提升的会话 在管理安装的上下文中 因此这是强制性的 因此这是不可更改的 除了创建计划任务并执行它之外 还有什么更快或更友好的方法吗 编辑 这是需要未提升运行的命令 vboxmanage
  • 在输入时将动画添加到边框底部

    我希望输入的边框底部颜色在单击时随动画变化 与黄线一类似 我希望它出现在所有输入框和选择上 input container display inline block text align center awsome input paddin
  • 读取 XML 数据时超出了最大字符串内容长度配额 (8192)

    我正在尝试将一个大字符串 24 000 到 50 000 个字符 传递给自托管 TCP WCF 服务 我已将 maxStringContentLength 所有位置 提高到 22008192 我在某处读到我需要将绑定配置更改为 LargeB
  • 列名称为 END 的“END 处或附近存在语法错误”

    我在 MYSQL 中有一个表 必须在 postgresql 中转换它 我正在使用以下命令来创建表 create table emp COMPLETE BOOLEAN NOT NULL END BOOLEAN NOT NULL 我得到的错误是
  • 为什么在 Java 中用接口名称来声明变量? [复制]

    这个问题在这里已经有答案了 这是一个真正的初学者问题 我仍在学习 Java 基础知识 我可以 某种程度上 理解为什么方法会返回 List 而不是 ArrayList 或者为什么它们会接受 List 参数而不是 ArrayList 如果它对方
  • android studio中找不到R类

    在旧版本的 Android Studio 中 我曾经能够导航到 java 生成 包并查看 R 类 我使用的是 Android studio 4 1 在 Java 生成的包中看不到 R 类 知道为什么吗 我在哪里可以找到 R 类 附 我重建了
  • GOF 中提到的可插拔适配器

    Stack Overflow 上与此主题相关的帖子 Post 1 and Post 2 上面的帖子很好 但我仍然无法解答我的困惑 因此我将其作为新帖子放在这里 我的问题基于 GOF 的可重用的面向对象软件的元素关于可插拔适配器的书籍内容 在
  • 如何安排python脚本在给定时间退出

    我需要安排一个 python 脚本 它可以在给定时间退出并自行终止 对于调度 我使用 pythonschedule下面是代码 import schedule from threading import Thread import time
  • 如何访问 iPhone 的通话记录/历史记录

    这是针对越狱的 iPhone 的 有没有办法可以访问 iPhone 上的 call history db 这是苹果记录电话信息的数据库 它存储在 private var mobile Library CallHistory 目录中 当我尝试
  • 如何对 Flask 端点进行 pytest

    我开始使用 Flask 和 Pytest 来通过单元测试实现休息服务 但我遇到了一些麻烦 我想为我的简单端点做一个简单的测试 但我不断得到一个Working outside of application context 运行测试时出错 这是