【问题标题】:Unit test validation for a Flask-WTF formFlask-WTF 表单的单元测试验证
【发布时间】:2019-05-16 15:04:08
【问题描述】:

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

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

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

【问题讨论】:

  • 错误信息有什么不清楚的地方?你有.is_submitted()() 表示函数调用,在= 的左侧
  • 我知道这是一个语法错误,但是我必须用什么来替换它才能做我想做的事情?
  • 查看the source coce is_submitted 没有设置任何属性,它只是调用返回布尔值的_is_submitted()。在测试方面,我不知道如何处理这种情况,但这可能会是一个更好的开场白

标签: python flask flask-wtforms wtforms


【解决方案1】:

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

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

Docs

【讨论】:

    【解决方案2】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      相关资源
      最近更新 更多