Gun*_*her 5 python unit-testing flask
有没有办法content_type在 Flask 中为测试客户端设置默认值?
例如,如果我有以下测试:
import unittest
class MyTestCase(unittest.TestCase):
def setUp(self):
from my_flask_project import app
self.client = app.test_client()
def test_request_one(self):
self.client.post(
data='{}'
content_type='application/json'
)
def test_request_two(self):
self.client.post(
data='{}'
content_type='application/json'
)
Run Code Online (Sandbox Code Playgroud)
我所有的测试用例都将设置content_type='application/json'. 我想设置application/json为请求的默认内容类型,但找不到有关如何执行此操作的任何文档。
这样的事情将是理想的:
def setUp(self):
from my_flask_project import app
self.client = app.test_client(
default_content_type='application/json'
)
Run Code Online (Sandbox Code Playgroud)
对于大多数标题,您可以传递一个environ_basedict 来设置其他标题。但是,测试客户端将始终将Content-Type标头设置为传入的值,覆盖基数。还有environ_overrides, 可以覆盖该覆盖,但这意味着您不能将标头设置为其他任何内容,这可能不是您想要的。
创建一个自定义TestClient类,如果未通过则设置默认内容类型。将该类分配给您的 Flask 应用程序test_client_class,它将在创建测试客户端时使用它。
from flask.testing import FlaskClient
class CustomClient(FlaskClient):
def open(self, *args, **kwargs):
kwargs.setdefault('content_type', 'application/json')
return super().open(*args, **kwargs)
app.test_client_class = CustomClient
Run Code Online (Sandbox Code Playgroud)
您可以将此技术用于任何 arg,而不仅仅是content_type,包括environ_base.
| 归档时间: |
|
| 查看次数: |
1245 次 |
| 最近记录: |