【发布时间】:2020-09-08 09:00:23
【问题描述】:
我有一个带有云数据库的flask应用程序的登录页面,我想在登录后测试结果,具体来说,我想在登录后测试HTML元素。我见过有人测试返回状态码或使用@ 987654322@ 检查数据是否存在。
有没有办法让我定位一个特定的 HTML 标记,例如在 POST 用户名、密码到路由函数 login() 之后呈现的模板中的 <h1 id="userTitle"> </h1>
def test_users_login(self):
result = self.app.post('/login', data=dict(username='Nicole', password='abc123'), follow_redirects=True)
# I want to check the HTML tag's text value data after logging in
self.assertEqual(result.data.getTag("h1", b"Nicole") #What I imagined using <h1>
self.assertEqual(result.data.getId("user", b"Nicole") #What I imagined using id
#This returns true which is okay, because 'Nicole' exists in the whole page
self.assertIn(b'Nicole', result.data)
在我渲染的 jinja2 模板中,我有这个是登录后的。
<h1 id="userTitle">{{ session['username'] }},Welcome!</h1>
我猜 assertIn 效果不错,但我只想知道如何在不运行浏览器测试的情况下测试 HTML 标记。
【问题讨论】:
-
感谢您的帮助,谢谢。
-
@JoshClark 是的,但它没有提到如何定位特定的 HTML 标记,因为我想测试
assertEqual(HTML Tag Text Value, My Value),以检查特定的 HTML 元素内部文本。只是想知道它是否可能,否则我必须使用assertIn -
如何将模板渲染为变量(在发送到客户端之前)并使用
lxml或Beautifulsoup处理HTML 元素(如网页抓取)?
标签: python html unit-testing flask jinja2