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

测试需要Flask应用或请求上下文的代码

阮梓
2023-03-14
问题内容

我正在working outside of request context试图访问时,session在测试。测试需要测试的内容时,如何设置上下文?

import unittest
from flask import Flask, session

app = Flask(__name__)

@app.route('/')
def hello_world():
    t = Test()
    hello = t.hello()
    return hello

class Test:
    def hello(self):
        session['h'] = 'hello'
        return session['h']

class MyUnitTest(unittest.TestCase):
    def test_unit(self):
        t = tests.Test()
        t.hello()

问题答案:

如果要向你的应用程序发出请求,请使用test_client

c = app.test_client()
response = c.get('/test/url')
# test response

如果你想它使用一个应用程序上下文测试代码(current_app,g,url_for),推送app_context

with app.app_context():
    # test your app context code

如果要使用请求上下文(request,session)的测试代码,请按test_request_context。

with current_app.test_request_context():
    # test your request context code

应用程序上下文和请求上下文也可以手动推送,这在使用解释器时非常有用。

>>> ctx = app.app_context()
>>> ctx.push()

运行shell命令时,Flask脚本或新的Flask cli将自动推送应用上下文。

Flask-Testing 是一个有用的库,其中包含用于测试Flask应用程序的帮助程序。



 类似资料:
  • 可以代理请求上下文中的数据,支持静态方法调用和对象方法调用。 示例 假设有这么一个类: <?php namespace Imi\Test\Component\RequestContextProxy; class A { public function add($a, $b) { return $a + $b; } } 定义代理类 RequestCont

  • 没有经过测试的东西都是不完整的 这一箴言的起源已经不可考了,尽管他不是完全正确的,但是仍然离真理 不远。没有测试过的应用将会使得提高现有代码质量很困难,二不测试应用 程序的开发者,会显得特别多疑。如果一个应用拥有自动化测试,那么您就 可以安全的修改然后立刻知道是否有错误。 Flask 提供了一种方法用于测试您的应用,那就是将 Werkzeug 测试 Client 暴露出来,并且为您操作这些内容 的

  • 这部分文档描述了在 Flask 0.7 中的行为,与旧的行为基本一致,但有细小微妙的 差异。 这里推荐先阅读 应用上下文 章节。 深入上下文作用域 比如说你有一个应用函数返回用户应该跳转到的 URL 。想象它总是会跳转到 URL 的 next 参数,或 HTTP referrer ,或索引页: from flask import request, url_for def redirect_url

  • 问题内容: 我正在为我的Flask Web应用程序编写一些单元测试,并且试图测试匿名用户发出的请求和登录用户之间的响应差异。 我正在使用扩展程序来实现用户登录/注销。 显然,我可以执行匿名请求,但是如何模拟已登录用户的请求? 我认为发送标头中的cookie 就足够了,但是它不起作用。 会话Cookie值是我从浏览器中的真实登录名获得的值。 问题答案: Flask-Login 在会话中寻找,你可以使

  • 问题内容: 有没有一种方法可以将Flask请求对象注入到其他Flask应用中。这就是我想要做的: 我正在尝试使用Google Cloud Functions,这是由云运行时调用的函数。它接收一个作为参数,然后我要通过自己的一组路由进行处理。 我尝试了以下操作,但不起作用: 对于所有请求,这将返回404错误。 编辑: 实现的简单方法如下: 这本质上要求我自己编写路由匹配逻辑。我想知道是否有一种避免这

  • 问题内容: 在我的JMeter测试中,如果有任何错误,我想触发HTTP请求以在系统上发布消息,以进一步关注。我在这里可以做什么?邮件可视化工具可以很好地通过电子邮件报告错误。我想做同样的事情,但是要通过HTTP请求。我正在使用jmeter 3.2。 问题答案: 您可以执行以下操作: 在HTTP Request采样器之后添加If Controller,并将以下代码放入“条件”区域: 将SMTP Sa