问题标签 [flask-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
728 浏览

python - 使用 Flask-Testing 测试 API 端点

我一直在使用 Flask-Testing 来测试我的 API,但我最近遇到了一些问题。我通常想要做的是验证端点按预期更新我的数据库。为此,我将在到达终点之前验证数据库值,然后到达终点,然后验证值是否已更新,如下所示:

这行得通,但我的问题是,它只有在我们清除调用之间的会话时才有效db.session.commit()。感觉就像是在自找麻烦,因为其他从事此工作的程序员很可能会在某些时候忘记包含该内容。最重要的是,不必要地提交这么多会导致测试速度变慢。是否有任何合理的方法来强制在查询中刷新数据?像db.session.query(MyDBItem, refresh=True)什么?或者其他一些通常不太容易出错的方法?

我已经尝试过session.refresh()and session.expire_all(),但两者都没有始终如一的工作,并且都具有与 session.commit() 相同的潜在陷阱

看起来将隔离级别设置为READ COMMITTED可能会解决问题,但如何在 flask-SQLAlchemy 中执行此操作尚不清楚。

0 投票
1 回答
212 浏览

python - Flask 测试数据库应用程序上下文

我如何构建我的烧瓶项目,以便我的模型可以知道是否TESTING启用(从而使用测试数据库),而无需让它们处理或了解应用程序上下文。

我正在将此开发为一个开源项目,因此来源可能会对此有所了解:https ://github.com/nficano/jotonce.com/blob/master/jotonce/messages/models.py#L33

0 投票
1 回答
50 浏览

flask - 烧瓶测试客户端拒绝数据中的arobase?

我正在尝试在我的 Flask 中设置测试,但由于未知原因,当我使用 arobase 添加参数时,Flask 失败。

我按照这里的片段http://flask.pocoo.org/snippets/26/并且可以发出成功的请求(它有效),但是当我尝试发帖时,它失败了(有以下例外):

例外:

有关信息,这不会产生异常:

(注意删除了“@”)

我还删除了中间件(在回溯中指出),但没有取得多大成功。

我错过了什么?

0 投票
3 回答
7122 浏览

python - 单独使用内存数据库进行测试 - 如何?

我有这个代码:

我的应用程序.py:

用户.py:

测试.py:

我怎样才能使单元测试工作?

我希望我的单元测试使用与主应用程序分开的内存数据库,但显然我不能按照我尝试的方式去做(只需更改 SQLALCHEMY_DATABASE_URI 值)

提前致谢!

0 投票
1 回答
2310 浏览

python - Flask 视图测试:如何防止数据被保存到数据库中?

我有一个带有 SQLAlchemy 的应用程序,已初始化:

以及我正在研究的一个视图,它只以 json 格式返回所有用户:

我的测试:

我运行我的测试FLASK_CONFIG=testing nosetests(我检查了,app.testing 设置为 true)。

对我的 psql 数据库运行它,我发现我添加到数据库中的这些用户正在被保存!

我该如何阻止这种情况发生?我尝试覆盖 db.session.commit() 什么都不做,但是当我调用视图时数据库会回滚。有没有使用的替代方法test_client()?我不能直接调用该方法,因为jsonify除了响应之外不允许我在任何地方返回数据。

更新:这是我的临时(?)解决方案:

现在我不需要在我的测试中使用 jsonify()

0 投票
1 回答
342 浏览

python - 烧瓶测试 - 为什么测试失败

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

测试.py

应用程序/初始化.py

当我启动测试时,test_hello 失败,因为 response.status_code 是 404。请告诉我,我该如何解决?看来,该应用程序实例对views.py 中的视图函数一无所知。如果它需要整个代码,可以在这里找到

0 投票
1 回答
5499 浏览

python - Flask-Testing 和 Flask-SQLAlchemy:first_or_404()

我正在尝试使用Flask-Testing Flask-SQLAlchemy模型进行测试。更准确地说,这个模型的静态方法使用first_or_404()我找不到让我的测试工作的方法。

这是一个突出问题的自包含示例:

我得到了错误:

所以该行self.assert404(ModelToTest.get_by_identifier('identifier'))确实在调用中产生了一个异常,first_or_404()这个异常是 a werkzeug.exceptions.NotFound,它似乎不是self.assert404().

运行此测试的要求是:

  • 烧瓶
  • 烧瓶-sqlalchemy
  • 烧瓶测试

值得注意的是,当我在应用程序中使用该函数时,它的行为符合预期。

提前致谢。

0 投票
1 回答
1078 浏览

python - Flask-Testing 信号不支持错误

运行我的测试时,我得到以下回溯。

__init__.py

test_routes.py

看来get_context_variable函数调用是错误的来源。如果我尝试使用assert_template_used. 很难找到任何解决方案。

0 投票
1 回答
11271 浏览

python - 如何使用 Flask test_client 设置请求参数?

我必须测试从request.args.

我不能模拟这个,因为视图中的很多东西都使用了请求对象。我能想到的唯一选择是手动设置request.args.

我可以用 来做到这一点test_request_context(),例如:

现在这个视图中的请求将具有我设置的参数。但是我需要调用我的视图,而不仅仅是初始化它,所以我使用它:

但我不知道如何以这种方式操纵请求参数。

我试过这个:

但这不设置request.args

0 投票
2 回答
1742 浏览

unit-testing - 为什么我的 Flask 应用程序的全局对象在应用程序拆卸时没有被删除?

我正在编写一个具有全局对象的应用程序,该对象应该与应用程序一样长。不同的端点应该改变全局对象。

下面是我的服务器,其中包含一个示例模型对象,该对象要在虚拟端点调用上进行变异。

server.py

就像一个优秀的软件开发人员一样,我想对此进行测试。这是我的测试套件:

test.py

当我运行测试时,我注意到我的foo对象从未被删除(通过打印)。这是我运行测试套件时的输出:

关于应用程序上下文,我必须对我的全局对象做一些不正确的事情。我仔细研究了测试文档,但似乎找不到我需要的确切内容。

foo当应用程序上下文超出范围(例如在我的测试中)时,如何确保我的对象被销毁?为什么我的单元测试套件不改变其foo创建的对象setUp

我认为它可能是在修改全局app对象server.py,但是当我打印时foo,我发现它没有在我的测试套件范围内定义。