我正在为我的烧瓶应用程序编写单元测试。我正在测试用户注册功能,发帖时返回的响应数据错误。响应数据曾经是正确的,因为我在代码中包含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)
我希望您的注册请求已发送。定期检查您的电子邮件是否有更新,以使该消息闪烁在响应数据中。但是,它闪烁着“恭喜!您现在是注册用户”。不久前从我的代码中删除了该代码。