【问题标题】:Django Unit Testing: CSS selectors to test HTML?Django 单元测试:测试 HTML 的 CSS 选择器?
【发布时间】:2022-04-11 09:29:16
【问题描述】:

我发现了我非常喜欢 Rails 框架的一些东西,它能够使用 css 选择器非常轻松地测试模板的输出,例如测试页面中有多少“li”元素,如果一个元素具有特定的ID 存在,ecc。

与这些工具相比,AssertContains 感觉非常有限,请查看: http://guides.rubyonrails.org/testing.html#testing-views

如何用 django 实现类似的功能?有没有实现 CSS 选择器的 python 库?

【问题讨论】:

    标签: python django css-selectors django-unittest


    【解决方案1】:

    django-with-asserts 提供了一个 TestCase mixin,它允许您像这样测试 HTML:

    with self.assertHTML(resp, 'input[name="email"]') as (elem,):
        self.assertEqual(elem.value, 'bob@example.com')
    

    【讨论】:

      【解决方案2】:

      您可以使用 Selenium 使用 CSS 选择器、xpath 等查找元素。驱动程序是特定于浏览器的,例如 Firefox 驱动程序、Chrome 驱动程序等,但它与 Django 中最接近。

      见:https://docs.djangoproject.com/en/4.0/topics/testing/tools/#liveservertestcase

      和:http://selenium-python.readthedocs.org/en/latest/locating-elements.html 用于 Selenium 中可用的选择器。

      【讨论】:

      • selenium 真的很酷,但我还没有处于测试阶段。我想要一些可以在开发的早期阶段快速测试的东西。 Django 使用内存中的 Sqlite 测试运行得非常快,我很喜欢。 Rails 测试要慢得多,但它们几乎没有我认为 Django 可以实现和/或简化的方便功能。曾经尝试过 lxml.cssselect 吗?我昨天试了一下,但并不像我希望的那么容易。
      • 您总是可以将模板或模板块渲染为字符串,并使用 lxml 或 BeautifulSoup 之类的库来解析它们以进行断言。
      猜你喜欢
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 2016-08-19
      • 2019-04-27
      相关资源
      最近更新 更多