问题标签 [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 测试客户端使用 GET 请求而不是 POST
我有一条仅用于 POST 请求的路由,如果满足条件,它会返回 json 响应。是这样的:
我正在使用flask-sslify将 http 请求强制发送到 https。
我正在使用 Flask 测试客户端和 unittest 测试这条路线。测试功能类似如下:
输出正好在下面:
我收到一个错误,即 Method is not allowed in that route。如果我将 GET 指定methods=['GET', 'POST']
为路由测试的方法 ( ) 似乎有效。但是为什么测试客户端发出 GET 请求呢?除了为路由指定 GET 请求之外,有什么办法吗?
更新:
如果这样做:
我得到这样的输出:
python - 如何在测试 Flask 应用程序期间避免“ClientRedirectError:检测到循环”错误(以及它是如何触发的)?
环境:
- Python 3.6.1
- 烧瓶 0.12.2
- Werkzeug 0.14.1
在为我的Flask应用程序编写测试时,我发现了以下特性:如果在 Flask 应用程序的测试中,您将被重定向到同一个 url 两次“连续” ClientRedirectError: loop detected
将被抛出,即使它在第二次重定向后停止重定向(即循环实际上并没有发生)。
考虑以下简化示例:
应用程序.py
test_redirect.py
现在,如果我要运行测试——它会抛出一个ClientRedirectError: loop detected
(尽管从代码中可以看出第二次重定向只会发生一次)。
如果我只是运行应用程序并转到/redirection/
- 它会/
毫无问题地将我带到索引(即),并且不会发生循环。
我需要if not session.get('test', False):
in的原因index()
是因为在我的应用程序中我使用它来设置一些东西session
,以防用户/
第一次访问。正如代码中的评论所建议的那样,在我的“真实”应用程序redirection()
中是一个让用户登录的功能。
我的问题是:
- 是否有一种“正确”的方法来克服
ClientRedirectError: loop detected
类似情况下的投掷问题(即是否有可能使测试运行并通过)? - 是否有更好/“更正确”的方式来
session
为“首次”用户设置内容? - 是否可以将提到的行为视为werkzeug中的错误(即实际循环没有发生,但
ClientRedirectError: loop detected
仍然被抛出)?
解决方法,我想出了(仍然没有回答我的问题):
这可能看起来多余,但这只是一个简化的示例(如果self.test_client.get('/redirection/')
将其替换为self.test_client.post('/login/', data=dict(username='user', password='pass'))
.
python - 如何在烧瓶中为经过身份验证的 url 编写测试用例
我正在使用带有 mongoengine 和登录管理器的烧瓶进行会话维护。我想为经过身份验证的视图编写测试用例。任何人都可以对此提供帮助/建议。
python - 使用flask.app.test_client()测试Flask应用程序时如何在python Flask中指定标头?
我们正在使用此处flask.app.test_client
解释的方法测试 Python Flask 应用程序
我们的应用程序使用 JWT 令牌进行身份验证,因此所有 API 调用都必须指定令牌。有没有办法提供 JWT 作为标头?
下面是测试代码片段, app.tests_client
python - SQLAlchemy 接受不同的数据类型、空字符串、更大长度的字符串等所有内容
我正在使用 Flask 和 Flask SQLAlchemy 和 Flask 测试。我定义了一个示例模型,其中包含最大长度为 100 的字符串列。我认为如果我尝试插入长度大于 100 的字符串,我应该会遇到异常。SQLAlchemy 甚至允许我插入其他数据类型,如 int。即使我已将此列定义为字符串类型。或者,如果我尝试插入一个空字符串,我也不会引发异常。尽管我已将列设置为不可为空。
为什么 SQLAlchemy 只接受一切。不应该至少提出一个例外吗?
unit-testing - FlaskTest 字段列表表单
我有表格:
在路线:
我正在写一些测试(使用 Flask-Test)。我将“new_name”从发布数据保存到数据库,然后将其编辑为“名称”(输入表单):
我在这个测试中得到错误:
如何正确测试来自表单字段列表的请求?我可以走错路线吗?
python-3.x - 使用 Flask 测试客户端测试文件上传
我正在测试两个视图,并且这两个视图都使用FileStorage对象从发布请求中保存上传的文件。
在测试期间,我不想实际保存上传的存储空间,所以我使用's装饰器修补FileStorage.save
方法。unittest
patch
测试#1:
测试#2:
我正在测试的视图之一如下所示:
如果我只运行一个测试它工作正常,但是当我添加第二个测试时,运行失败并出现以下错误:
不知道如何解决这个问题,你们中的任何人都可以帮我解决这个问题吗?
python - Flask Test Post 未发送正确的数据
我正在为我在 Flask 中创建的应用程序的登录部分编写测试。但是,当我使用该test_client.post()
方法传递数据时,我的测试数据没有被正确传递。
更重要的是,手动登录测试 POST 和重定向很好。
测试用例代码为:
给出的响应显示用户名正确传递,但密码没有值。
这是控制台中返回的响应:
我不确定这里有什么问题。这种情况以前发生在其他人身上吗?
python - 烧瓶测试:self.client.delete() 返回 200 但失败,因为他没有删除任何内容
我有一个使用 SQL Alchemy 和 postgresql 的 CRUD 足球运动员烧瓶应用程序。我正在尝试使用 unittest 和 flask-testing 对其进行测试,但是当我在播放器上测试删除和修补请求时(基于他的编号),返回的状态为 200,但播放器并未从数据库中删除,因此测试失败.
我的 app.py :
我的test.py:
(joueurs 是法语玩家的意思)
当我运行 python test.py 时:
AssertionError: b'AMAVI' 在 b'my edit.html file' 中意外发现
所以编号为 18 且名为“AMAVI”的播放器没有被删除,我不明白为什么因为删除请求返回 200 并且我的应用程序在本地服务器上运行良好。
python - 从同级目录导入文件
我需要为我的 Flask 应用程序运行单元测试。在我的测试配置文件中,我需要create_app
从同级目录导入烧瓶函数来初始化测试应用程序。如果没有导入错误,我无法弄清楚。
我尝试过放置__init__.py
几乎每个文件夹都没有成功。我读过不建议编辑 sys 路径,所以我想要一个没有的解决方案。
文件夹结构
配置文件
引发此错误:
和:
引发此错误:
有人可以解释为什么它不起作用以及 pythonimport
的一般工作原理吗?我一直无法弄清楚它们。