django项目中的Javascript测试,包括CI和覆盖率

Javascript testing within django project, with CI and coverage

本文关键字:包括 CI 覆盖率 测试 项目 Javascript django      更新时间:2023-09-26

我正在处理一个Django项目,该项目的设计相当重javascript。对于服务器端代码,我们试图通过使用单元测试来获得不错的测试覆盖率,并在稍高的级别上使用Django测试客户端进行测试。我们有一个为CI运行的Hudson/Jenkins服务器,或多或少按照本文的思路进行了设置,为我们提供了测试通过率和覆盖率统计数据。

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

我发现了很多东西,但很多感觉它无法在CI服务器上运行。此外,与Django的集成通常不太好,也不能很好地隔离服务器环境。最后,理想情况下,我希望能以良好的速度工作,以保持我的测试/代码周期尽可能快。

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

HtmlUNIT看起来可以满足您的一些需求(即支持JavaScript的无头浏览器)。将其与"runserver"风格的管理命令进行比较应该不会太难,该命令也会在退出时转储覆盖率。

http://htmlunit.sourceforge.net/

您可能想尝试Ghost.py,这是Phantom.JS的Python实现。我为django提供了一个扩展,该扩展构建在即将推出的LiveServerTestCase之上。

它依赖于PyQt4,因此您必须将其复制到项目的虚拟环境中。