【问题标题】:Django: test successful loading of static filesDjango:测试成功加载静态文件
【发布时间】:2012-12-05 11:26:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django automated-tests django-testing


    【解决方案1】:

    我猜你想知道 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/ 子目录中查找静态资源。

    【讨论】:

      【解决方案2】:

      我刚刚发现自己遇到了一个非常相似的问题,尽管我想验证文件是否包含在页面中,而不是检查它是否已加载,因为我有选择地包含它。

      为此,我只是使用 assertContains 检查:

      def test_static_file_included(self):
          response = self.client.get(reverse('my-view'))
          self.assertContains(response, 'staticfilename.js')
      

      请记住,staticfilename.js 可以包含在页面的其他位置。

      assertContains会检查响应状态码是否正常,然后检查搜索str是否包含在response.content中。

      【讨论】:

      • 这不会检查链接是否损坏,因为staticfilename.js 仍会在响应中。
      猜你喜欢
      • 2011-10-30
      • 1970-01-01
      • 2017-12-25
      • 2019-08-31
      • 2014-11-12
      • 2021-04-03
      • 2012-01-21
      • 2016-11-06
      • 2017-11-08
      相关资源
      最近更新 更多