是否可以在Django自动测试中测试成功加载静态页面组件?
例如,使用django测试客户端,除了将client.get('x').status_code
测试为200之外,我还想测试是否所有页面的静态资源(链接的css和js文件)都已成功加载。
如果使用client
无法实现,是否有插件或补充测试系统,例如硒,能够进行这种类型的测试吗?
答案 0 :(得分:5)
我想你想知道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/
子目录,以查找静态资源。
答案 1 :(得分:1)
我发现自己遇到了一个非常类似的问题,虽然我想验证文件是否包含在页面中而不是检查它是否已加载,因为我选择性地包含它。
为此,我只使用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
中。