单元测试时,如果一个表单有两个提交按钮,如何确认提交哪个按钮?

各位大侠

在, self.client.post 时,如何确认提交那个按钮?

我的form,有两个按钮:

class ApplicationForm(MyBaseForm):
    comments = TextAreaField('备注')
    save_submit = SubmitField('保存')
    send_submit = SubmitField('提交')

我的视图:

@volunteer_bp.route('/application', methods=['GET', 'POST'])
@login_required
def application():
    """
    填表,编辑表格,和
    :return:
    """
    form = ApplicationForm()

    if form.validate_on_submit():
        # 如果用户点击的是保存,则保存,状态为填表中
        if form.save_submit.data:
            pass

        # 如果用户点击的是提交,则提交,状态为待保存
        if form.send_submit.data:
            pass

return render_template('/')

测试数据:

volunteer_application_data = dict(
    volunteer_name='张三',
    age=11,
    gender=1,
    save_submit=True,
    send_submit=None
)

测试函数:

def test_post_volunteer_application_with_wrong_data(self):
    """
    测试提交表单,但是没有提供必填数据
    :return:
    """
    self.login('zhangsan', 'something')
    response = self.client.post(url_for('volunteer.application'), data=volunteer_application_data,
                                follow_redirects=True)
    data = response.get_data(as_text=True)

相关代码呢?

下次提问请提供尽可能详细的相关信息。具体规则见技术提问帖发帖规则

感谢提醒,已经添加代码

根据你视图函数的判断逻辑,你不是已经自己设置了提交按钮的字段值了么……

volunteer_application_data = dict(
    volunteer_name='张三',
    age=11,
    gender=1,
    save_submit=True,  # 这个字段为 True 表示按下「保存」按钮
    send_submit=None    # 这个字段为 True 表示按下「提交」按钮
)

谢谢指点,我当时这么写了,不确认对不对,故此发问,非常感谢。

1 Like