8

是否可以在 Django 自动测试中测试成功加载静态页面组件?

例如,使用django测试客户端,除了测试client.get('x').status_code为200之外,我想测试所有页面的静态资源(链接的css和js文件)是否成功加载。

如果无法使用client,是否有插件或补充测试系统(例如 Selenium)来启用此类测试?

4

2 回答 2

6

我猜你想知道 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))

findersstatic/所有应用程序的子目录中查找静态资源。

于 2013-04-17T16:44:55.300 回答
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.

于 2015-05-11T04:32:33.263 回答