Flask-WTF表单的单元测试验证

时间:2019-05-16 15:04:09

标签: python flask flask-wtforms wtforms

我正在为“注册”功能运行单元测试。有没有办法检查表单中的所有字段在提交时都满足其验证者的要求?

def test_register(self):
    form = RegistrationForm()
    form.username.data = "test"
    form.email.data = "test@email.com"

我的注册表单有一个“ SubmitField”,我想知道是否有一种方法(在单元测试中)模拟单击的“ SubmitField”,然后继续测试是否使用来满足用户名和电子邮件字段的验证者“ AssertTrue()”?

2 个答案:

答案 0 :(得分:1)

您可以调用form.validate()来运行字段验证,而无需模拟请求。

通常您会使用form.validate_on_submit(),这只是form.is_submitted()form.validate()的快捷方式。

Docs

答案 1 :(得分:0)

这是一种方法,您必须传递不正确的数据并检查是否引发了相关错误。

def test_missing_field_user_registration_error(self):
    self.app.get('/register', follow_redirects=True)
    response = self.register('patkennedy79@gmail.com', 'FlaskIsAwesome', '')
    self.assertIn(b'This field is required.', response.data)

https://gitlab.com/patkennedy79/flask_recipe_app/blob/master/web/project/tests/test_users.py