【问题标题】:Javascript testing within django project, with CI and coveragedjango 项目中的 Javascript 测试,具有 CI 和覆盖率
【发布时间】:2011-09-14 15:23:15
【问题描述】:

我正在开发一个 Django 项目,该项目在设计上非常繁重。对于服务器端代码,我们尝试使用 unittests 来获得不错的测试覆盖率,并在稍高的水平上使用 Django 测试客户端进行测试。我们有一个为 CI 运行的 Hudson/Jenkins 服务器,其设置或多或少类似于this article,为我们提供了测试通过和覆盖率统计信息。

我也想为我们的 javascript 提供类似的东西。我希望能够在单元测试级别进行测试,也可以在集成/验收测试级别进行测试。后者需要一个完整的 DOM JS 环境和一个正在运行的 django 服务器。理想情况下,我想以某种方式使用 Django 测试客户端,这样我就可以按照我习惯用于 Django 测试的方式设置服务器状态。我还想从 CI 服务器运行所有测试,这需要某种无头浏览器环境(服务器是没有桌面环境的 Ubuntu)。

找了一堆东西,但是感觉很多都不能在CI服务器上运行。此外,与 Django 的集成通常不是很好,并且对服务器环境没有很好的测试隔离。最后,理想情况下,我希望能够以相当不错的速度运行,以尽可能快地保持我的测试/代码周期。

是否有框架可以满足我的需求,或者是否有人设法拼凑出一个接近的解决方案?是否有任何既定的最佳实践可以结合 Django 进行良好的 javascript 测试(即我缺少的 django 人有没有推荐的方法)?

【问题讨论】:

  • “拼凑在一起”很适合我。我已经使用 jruby 的 celerity 和zombie.js 来完成您的要求,但从未找到非常令人满意的解决方案。无论如何,总有一些特定于浏览器的东西必须手动测试。
  • 这里有同样的问题。我将查看 django-jenkins 中的 javascript 内容,看看它是否可以做一部分。

标签: javascript django testing continuous-integration hudson


【解决方案1】:

您可能想尝试Ghost.py Phantom.JS 的 Python 实现。我提供了一个基于即将推出的LiveServerTestCase 的 django 扩展。

它依赖于 PyQt4,因此您必须将其复制到项目的 virtualenv。

【讨论】:

    【解决方案2】:

    HtmlUNIT 看起来可以满足您的一些需求(即支持 JavaScript 的无头浏览器)。将其与“runserver”风格的管理命令结合起来应该不会困难,该命令也会在退出时转储覆盖范围。

    http://htmlunit.sourceforge.net/

    【讨论】:

    猜你喜欢
    • 2016-09-13
    • 2013-07-05
    • 2022-06-11
    • 1970-01-01
    • 2012-03-25
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 2014-02-26
    相关资源
    最近更新 更多