【发布时间】:2022-01-11 22:25:02
【问题描述】:
致力于在会话中存储登录对象。解决方案在本地机器上运行良好。但是测试用例在黑客等级环境中失败。 后续步骤:
- 创建的登录页面接受用户名和密码
- 创建路由以将表单中的信息保存为会话对象
user.html
<!DOCTYPE html>
<html lang="en">
<body>
{% block content %}
<!-- write a condition to check if the user in session or not with appropriate response and redirect routes-->
{% if login %}
Logged in as {{ session['username'] }}
<a href="/logout">logout</a>
{%else%}
You are not logged in
<a href="/login">login</a>.
{%endif %}
{% endblock %}
</body>
</html>
test.py
def test_login_and_user_page(self):
soup1 = self.get_soup1()
msg = soup1.find('p', {'id': 'a'})
link = soup1.find('a')
assert msg.text == 'Logged in as admin'
assert link['href'] == '/logout'
soup3 = self.get_soup3()
assert soup3.text == "You've been logged out successfully!"
soup4 = self.get_soup4()
msg = soup4.find('p', {'id': 'a'})
assert msg.text == 'Logged in as user'
def test_user_page(self):
soup2 = self.get_soup2()
msg = soup2.find('p', {'id': 'b'})
link = soup2.find('a')
assert msg.text == 'You are not logged in'
assert link['href'] == '/login'
测试失败:
============================================== FAILURES ==============================================
_______________________________ Test_Webpage.test_login_and_user_page ________________________________
self = <tests.Test_Webpage object at 0x7f8baae8c198>
def test_login_and_user_page(self):
soup1 = self.get_soup1()
msg = soup1.find('p', {'id': 'a'})
link = soup1.find('a')
> assert msg.text == 'Logged in as admin'
E AttributeError: 'NoneType' object has no attribute 'text'
【问题讨论】:
-
我注意到的一件事是,在
user.html中,消息周围的<p>标签丢失了。据我在测试中看到的,他们过滤了<p>标签,所以也许这可以解决问题?
标签: python flask session session-variables flask-session