【问题标题】:Testing the html elements in flask routing templates unittest在烧瓶路由模板单元测试中测试 html 元素
【发布时间】: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
  • 如何将模板渲染为变量(在发送到客户端之前)并使用lxmlBeautifulsoup 处理HTML 元素(如网页抓取)?

标签: python html unit-testing flask jinja2


【解决方案1】:

虽然我没有从这里得到正确的答案,但我只是通过检查页面的内容设法用assertIn 进行了单元测试。
谢谢大家

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    相关资源
    最近更新 更多