单元测试Flask应用程序返回错误的响应数据

时间:2019-05-30 17:39:57

标签: python flask python-unittest

我正在为我的烧瓶应用程序编写单元测试。我正在测试用户注册功能,发帖时返回的响应数据错误。响应数据曾经是正确的,因为我在代码中包含flash(“恭喜!您现在是注册用户。”)。从那以后,我将该闪光灯更改为(“您的注册请求已发送。请定期检查您的电子邮件以获取更新”)。我已经保存了所有文件,并且在运行flask应用程序时,我得到了正确的响应。但是,在测试中我不是。

以下是路由:

@auth_bp.route('/register', methods=['GET', 'POST'])
def register():
    if current_user.is_authenticated:
        return redirect(url_for('tables.index'))

    form = RegistrationForm()
    if request.method == 'POST' and form.validate_on_submit():
        username = form.username.data
        email = form.email.data
        password = form.password.data
        send_registration_request_email(form, username, email, password)
        flash('Your registration request has been sent. ' +
              'Periodically check your email for updates')
        return redirect(url_for('auth.login'))

    return render_template('register.html.j2', form=form)

这是基本html页面中带有闪烁消息的部分,该页面由我的“ login” html页面(响应应指向的地方)扩展:

<div class="container">
  <hr>
  {% with messages=get_flashed_messages() %}
  {% if messages %}
  <ul>
  {% for message in messages %}
    <li style="color: red;">{{ message }}</li>
  {% endfor %}
  </ul>
  {% endif %}
  {% endwith %}
  {% block content %}{% endblock %}
</div>

这是测试:

class TestAuth(unittest.TestCase):
    def setUp(self):
        self.app = create_app(TestConfig)
        self.client = self.app.test_client()
        self.app_context = self.app.app_context()
        self.app_context.push()
        db.create_all()

    def tearDown(self):
        db.session.remove()
        db.drop_all()
        self.app_context.pop()


    def test_register(self):
        self.assertEqual(self.client.get('/auth/register').status_code, 200)
        username = 'carl'
        email = 'carl@aol.com'
        password = 'password'
        password2 = 'password'
        message = b'Your registration request has been sent. Periodically check your email for updates'
        # Test correct password
        response = self.client.post(
            '/auth/register',
            data = {
                'username': username, 'email': email, 'password': password,
                'password2': password2,
            },
            follow_redirects=True
        )
        self.assertIn(message, response.data)
        self.assertEqual(response.status_code, 200)

我希望您的注册请求已发送。定期检查您的电子邮件是否有更新,以使该消息闪烁在响应数据中。但是,它闪烁着“恭喜!您现在是注册用户”。不久前从我的代码中删除了该代码。

0 个答案:

没有答案