首页 > 解决方案 > 如何在 Django 测试期间运行 Lighthouse CLI?

问题描述

我想在 Django 测试期间运行 Lighthouse CLI。默认情况下,Django 测试不运行可以响应 HTTP 请求的服务器,因此这是不可能的。

如何在 Django 测试期间运行 Lighthouse CLI?

标签: djangolighthouse

解决方案


首先,安装 Lighthouse CLI:

$ npm install --save-dev @lhci/cli

然后,修改package.json以修改该scripts部分,如下所示:

{
  "scripts": {
    "lhci": "lhci"
  }
}

LiveServerTestCase您可以使用orStaticLiveStaticTestCase对响应 HTTP 请求的服务器运行测试,如下所示:

from django.contrib.staticfiles.testing import StaticLiveServerTestCase
import subprocess

class Example(StaticLiveServerTestCase):
   def test_example(self):
       subprocess.check_call([
           'npm', 'run', '--', 'lhci', 'collect', '--url', self.live_server_url, '--no-lighthouserc',
       ])
       subprocess.check_call([
           'npm', 'run', '--', 'lhci', 'assert',
       ])
       # Optional:
       subprocess.check_call([
           'npm', 'run', '--', 'lhci', 'open',
       ])

现在运行这个命令:

$ python manage.py test

请注意,您可能仍想在生产服务器上测试网站的性能,因为它可能与本地开发人员机器或测试服务器上的网站性能完全不同。


推荐阅读