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

How do I run Lighthouse CLI during tests in Django?

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

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

首先,安装 Lighthouse CLI:

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

然后,修改package.json修改scripts部分,像这样:

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

您可以 运行 对使用 LiveServerTestCase or StaticLiveStaticTestCase 响应 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

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