3
升级 marshmallow,运行 pytest 的时候有大量 warning 怎么快速修改正确?
source link: https://www.v2ex.com/t/820602
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
升级 marshmallow,运行 pytest 的时候有大量 warning 怎么快速修改正确?
featureoverload · 19 小时 59 分钟前 · 160 次点击新版 marshmallow 将 Field 中,非保留的关键参数都建议放入到 metadata
参数中,
没有放入的会显示 warning 。
示例代码:
# schemas.py
from marshmallow import Schema
from marshmallow import fields
class FooSchema(Schema):
name = fields.String(
required=True,
title='foo',
description='foo name')
relationship = fields.String(
title='bar', description='foobar')
测试代码:
from schemas import FooSchema
def test_warn():
INPUT = {
'name': 'something',
'relationship': 'others'
}
schema = FooSchema()
data = schema.load(INPUT)
assert data == INPUT
示例代码文件结构:
. ├── requirements.txt # marshmallow==3.3.0 ├── schemas.py └── test_warning.py
升级 marshmallow:
$ pip install -U marshmallow
...
Successfully installed marshmallow-3.14.1
使用 pytest 测试(出现 marshmallow warning ):
pytest test_warning.py
================================================================ test session starts =================================================================
platform darwin -- Python 3.8.3, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /private/tmp/_
collected 1 item
test_warning.py . [100%]
================================================================== warnings summary ==================================================================
.venv/lib/python3.8/site-packages/marshmallow/fields.py:218
/private/tmp/_/.venv/lib/python3.8/site-packages/marshmallow/fields.py:218: RemovedInMarshmallow4Warning: Passing field metadata as keyword arguments is deprecated. Use the explicit `metadata=...` argument instead. Additional metadata: {'title': 'foo', 'description': 'foo name'}
warnings.warn(
.venv/lib/python3.8/site-packages/marshmallow/fields.py:218
/private/tmp/_/.venv/lib/python3.8/site-packages/marshmallow/fields.py:218: RemovedInMarshmallow4Warning: Passing field metadata as keyword arguments is deprecated. Use the explicit `metadata=...` argument instead. Additional metadata: {'title': 'bar', 'description': 'foobar'}
warnings.warn(
-- Docs: https://docs.pytest.org/en/stable/warnings.html
=========================================================== 1 passed, 2 warnings in 0.03s ============================================================
修改为没有 warning 的代码:
...
class FooSchema(Schema):
name = fields.String(
required=True,
metadata={'title': 'foo', 'description': 'foo name'})
relationship = fields.String(
metadata={'title': 'bar', 'description': 'foobar'})
问题:
如果有很多个 fields.XXXFieldYYY(...)
代码,
一个一个手动修改起来太难了,
有没有什么快捷的方案一次性改好?
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK