跳转到主要内容

穴居人:HTML5缓存清单验证

项目描述

穴居人是一个解析和验证HTML5缓存清单的包。HTML5应用程序对它们的缓存清单非常挑剔,检查所有组件是否如预期那样困难。

穴居人提供了一个命令行脚本,名为check_manifest,它会拉取HTML页面,抓取使用过的资源,解析其缓存清单,并验证资源与清单的一致性。

$ check_manifest URL

清单中的问题将写入标准输出。如果您使用–level=LEVEL开关将日志级别设置为不同的严重性,则会输出更多关于该过程的信息,其中LEVEL是DEBUG、INFO、WARNING或ERROR。

程序性使用

穴居人已被设计成可以从您自己的代码中使用,例如,作为更大验证过程的一部分,或作为Web应用程序单元测试的一部分。

穴居人的工作由ManifestChecker类完成。您使用两个辅助工具实例化它:一个get_url函数,用于从URL获取数据,以及一个logger对象,用于获取日志消息。

from caveman import ManifestChecker

def get_url(url): ...

logger = ...

man_checker = ManifestChecker(get_url=get_url, logger=logger)

然后使用HTML页面的URL调用其check_manifest方法。

man_checker.check_manifest(url)

没有返回值:输出已记录到logger对象。有关详细信息,请参阅源代码中的文档字符串。

Django单元测试

作为程序性使用的示例,以下是在Django测试套件中使用Caveman的一种方法

from caveman import ManifestChecker

class TestManifest(django.test.TestCase):
    def setUp(self):
        self.checker = ManifestChecker(get_url=self.get_url, logger=self)
        self.caveman_log = []

    def get_url(self, url):
        """A get_url function for `caveman.ManifestChecker`."""
        # Use the Django test client to fetch the URL.
        response = self.client.get(url)
        return response.status_code, response.content, response

    # Record the serious Caveman messages in `self.caveman_log`.
    def debug(self, msg):       pass
    def info(self, msg):        pass
    def warning(self, msg):     self.caveman_log.append(msg)
    def error(self, msg):       self.caveman_log.append(msg)

    def test_my_manifest(self):
        """Caveman produces no warnings or errors for the cache manifest."""
        self.checker.check_manifest("/")
        self.assertEqual([], self.caveman_log)

限制

穴居人仅拉取您指定的HTML页面。尽管它验证了对其他HTML页面的链接与清单的一致性,但它不会拉取这些链接到的页面并验证其资源。

HTML5规范中的某些规则未进行验证。

更多信息

可以从PyPI下载穴居人:http://pypi.python.org/pypi/caveman

HTML5 缓存规范位于 http://www.w3.org/TR/html5/offline.html

文档位于 http://nedbatchelder.com/code/caveman

代码仓库和问题跟踪位于 bitbucket.org

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

caveman-1.0.tar.gz (6.1 kB 查看哈希值)

上传时间 源代码

由以下支持