是否可以在 Django 自动测试中测试成功加载静态页面组件?
例如,使用django测试客户端,除了测试client.get('x').status_code
为200之外,我想测试所有页面的静态资源(链接的css和js文件)是否成功加载。
如果无法使用client
,是否有插件或补充测试系统(例如 Selenium)来启用此类测试?
是否可以在 Django 自动测试中测试成功加载静态页面组件?
例如,使用django测试客户端,除了测试client.get('x').status_code
为200之外,我想测试所有页面的静态资源(链接的css和js文件)是否成功加载。
如果无法使用client
,是否有插件或补充测试系统(例如 Selenium)来启用此类测试?
我猜你想知道 django 的静态文件查找器是否能够找到你的静态资源。
考虑您的应用名称是my_app
. 您在其中有一个文件夹static
。您再次my_app
在其中有一个名为的文件夹,其中包含您的静态资源,比方说一些名为“test.jpg”的图像。
myapp
|-- __init__.py
`-- models.py
`-- static
`-- myapp
`-- test.jpg
from django.contrib.staticfiles import finders
from django.contrib.staticfiles.storage import staticfiles_storage
class TestStaticFiles(TestCase):
"""Check if app contains required static files"""
def test_images(self):
abs_path = finders.find('myapp/test.jpg')
self.assertTrue(staticfiles_storage.exists(abs_path))
finders
在static/
所有应用程序的子目录中查找静态资源。
我刚刚发现自己遇到了一个非常相似的问题,尽管我想验证文件是否包含在页面中,而不是检查它是否已加载,因为我有选择地包含它。
为此,我只需使用 assertContains 进行检查:
def test_static_file_included(self):
response = self.client.get(reverse('my-view'))
self.assertContains(response, 'staticfilename.js')
请记住,它staticfilename.js
可能包含在页面的其他位置。
assertContains
将检查响应 status_code 是否正常,然后检查搜索 str 是否包含在response.content
.