unit-testing - FlaskTest 字段列表表单
问题描述
我有表格:
class EntryForm(CsrfDissableForm):
id = HiddenField()
name = StringField(...)
...
class FooForm(FlaskForm):
entries = FieldList(FormField(EntryForm))
new_name = StringField(...)
...
在路线:
...
while len(form.entries) > 0:
form_entry = form.entries.pop_entry()
save_changes(form_entry)
new_inst = form.new_name.data
save_new(new_inst)
...
我正在写一些测试(使用 Flask-Test)。我将“new_name”从发布数据保存到数据库,然后将其编辑为“名称”(输入表单):
def test_change_name(self):
with self.client:
self.client.post(url, data={'new_name': 'Foo'})
foo = db.get_last_foo()
self.assertEqual(foo.name, 'Foo')
self.client.post(url, data={'entries': [{'id': foo.id, name: 'foo1'}]})
foo = db.get_by_id(foo.id)
self.assertEqual(foo.name, 'Foo')
我在这个测试中得到错误:
TypeError: add_file() got an unexpected keyword argument 'id'.
如何正确测试来自表单字段列表的请求?我可以走错路线吗?
解决方案
您需要发布表单值,因为它们将由您的应用程序发布。所以,它看起来像 data={"entries-0-id": foo.id, "entries-0-name": "foo1"}
您可能还需要在测试中包含 csrf 或禁用 csrf。
推荐阅读
- python - Python - TypeError: 1 is not a string -
- modal-dialog - 物化 css valign-wrapper 在模态中不起作用
- javascript - this.props is not a function between parent and children components
- c++ - C++:尝试用等效的 STL 算法消除原始循环
- anaconda - Windows10上plaidml安装
- excel-formula - 在 VLOOKUP 中使用 COUNTIF 完成课程
- primefaces - p:datagrid 不会从视图中加载数据
- c# - 在两个表之间配置实体框架多对多关系?
- java - 在由JAVA DSA签名的openssl c ++中验证签名?
- node.js - 重新加载或只编译一个文件而不重新启动服务器 nodejs