Werkzeug客户端响应缺少表单内容

问题描述 投票:0回答:1

我正在使用pytest和werkzeug客户端在flask应用程序上测试表单提交。两者都是新手。我的测试之一是检查提交的缺少必填字段的表单将再次显示该表单,并在表单字段下插入一个错误。

但是response.data中返回的HTML缺少<form>标记内的html,因此测试失败,因为未找到错误文本。即使当我使用浏览器(本人)执行相同的测试时,错误消息也明显位于页面源中。

这是我的考试不及格:

def test_form_error(client):
    response = client.post(
        '/test_form',
        headers={'Content-Type': 'application/x-www-form-urlencoded'},
        data={ 'firstname': 'Ned', 'email': '' },
        follow_redirects=True,
    )
    pprint(response)
    assert b'E-Mail is required' in response.data

这是我运行pprint时的pytest -s的输出(注意表单字段丢失):

 '<div class="form">    \n'
 '<form action="/test_form" method="post">\n'
 '  \n'
 '  \n'
 '\n'
 '</form>\n'
 '  </div>\n'
 '\n'

这里是浏览器源中返回的html(注意此处有字段):

<div class="form">
    <form action="/test_form" method="post">
        <label for="firstname">First Name</label>
        <input id="firstname" name="firstname" type="text">
        <label for="email">E-Mail</label>
        <input id="email" name="email" type="email">
        <div class="invalid-feedback">E-Mail is required</div>
        <input type="submit" value="Submit">
    </form>
</div>
flask pytest werkzeug
1个回答
0
投票

想通了。我是应用程序工厂的受害者。我没有在我的测试应用程序实例中启动flask-bootstrap-它可以处理表单呈现。

© www.soinside.com 2019 - 2024. All rights reserved.