问题标签 [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.
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 中执行此操作尚不清楚。
python - Flask 测试数据库应用程序上下文
我如何构建我的烧瓶项目,以便我的模型可以知道是否TESTING
启用(从而使用测试数据库),而无需让它们处理或了解应用程序上下文。
我正在将此开发为一个开源项目,因此来源可能会对此有所了解:https ://github.com/nficano/jotonce.com/blob/master/jotonce/messages/models.py#L33
flask - 烧瓶测试客户端拒绝数据中的arobase?
我正在尝试在我的 Flask 中设置测试,但由于未知原因,当我使用 arobase 添加参数时,Flask 失败。
我按照这里的片段http://flask.pocoo.org/snippets/26/并且可以发出成功的请求(它有效),但是当我尝试发帖时,它失败了(有以下例外):
例外:
有关信息,这不会产生异常:
(注意删除了“@”)
我还删除了中间件(在回溯中指出),但没有取得多大成功。
我错过了什么?
python - 单独使用内存数据库进行测试 - 如何?
我有这个代码:
我的应用程序.py:
用户.py:
测试.py:
我怎样才能使单元测试工作?
我希望我的单元测试使用与主应用程序分开的内存数据库,但显然我不能按照我尝试的方式去做(只需更改 SQLALCHEMY_DATABASE_URI 值)
提前致谢!
python - Flask 视图测试:如何防止数据被保存到数据库中?
我有一个带有 SQLAlchemy 的应用程序,已初始化:
以及我正在研究的一个视图,它只以 json 格式返回所有用户:
我的测试:
我运行我的测试FLASK_CONFIG=testing nosetests
(我检查了,app.testing 设置为 true)。
对我的 psql 数据库运行它,我发现我添加到数据库中的这些用户正在被保存!
我该如何阻止这种情况发生?我尝试覆盖 db.session.commit() 什么都不做,但是当我调用视图时数据库会回滚。有没有使用的替代方法test_client()
?我不能直接调用该方法,因为jsonify
除了响应之外不允许我在任何地方返回数据。
更新:这是我的临时(?)解决方案:
现在我不需要在我的测试中使用 jsonify()
python - 烧瓶测试 - 为什么测试失败
我正在尝试为一个简单的 Flask 应用程序编写测试。项目结构如下:
测试.py
应用程序/初始化.py
当我启动测试时,test_hello 失败,因为 response.status_code 是 404。请告诉我,我该如何解决?看来,该应用程序实例对views.py 中的视图函数一无所知。如果它需要整个代码,可以在这里找到
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
- 烧瓶测试
值得注意的是,当我在应用程序中使用该函数时,它的行为符合预期。
提前致谢。
python - Flask-Testing 信号不支持错误
运行我的测试时,我得到以下回溯。
__init__.py
test_routes.py
看来get_context_variable
函数调用是错误的来源。如果我尝试使用assert_template_used
. 很难找到任何解决方案。
python - 如何使用 Flask test_client 设置请求参数?
我必须测试从request.args
.
我不能模拟这个,因为视图中的很多东西都使用了请求对象。我能想到的唯一选择是手动设置request.args
.
我可以用 来做到这一点test_request_context()
,例如:
现在这个视图中的请求将具有我设置的参数。但是我需要调用我的视图,而不仅仅是初始化它,所以我使用它:
但我不知道如何以这种方式操纵请求参数。
我试过这个:
但这不设置request.args
。
unit-testing - 为什么我的 Flask 应用程序的全局对象在应用程序拆卸时没有被删除?
我正在编写一个具有全局对象的应用程序,该对象应该与应用程序一样长。不同的端点应该改变全局对象。
下面是我的服务器,其中包含一个示例模型对象,该对象要在虚拟端点调用上进行变异。
server.py
就像一个优秀的软件开发人员一样,我想对此进行测试。这是我的测试套件:
test.py
当我运行测试时,我注意到我的foo
对象从未被删除(通过打印)。这是我运行测试套件时的输出:
关于应用程序上下文,我必须对我的全局对象做一些不正确的事情。我仔细研究了测试文档,但似乎找不到我需要的确切内容。
foo
当应用程序上下文超出范围(例如在我的测试中)时,如何确保我的对象被销毁?为什么我的单元测试套件不改变其foo
创建的对象setUp
?
我认为它可能是在修改全局app
对象server.py
,但是当我打印时foo
,我发现它没有在我的测试套件范围内定义。