穴居人:HTML5缓存清单的验证
caveman的Python项目详细描述
穴居人是一个分析和验证的包。 HTML5 cache manifests。HTML5 众所周知,应用程序对其缓存清单非常挑剔, 很难检查所有组件是否都是正常的。
Caveman提供了一个命令行脚本,check\u manifest 页面,为已使用的资源清理它,分析其缓存清单,并验证 清单上的资源:
$ check_manifest URL
清单的问题被写入标准输出。更多细节 如果将日志级别设置为不同的严重性,则输出关于进程的信息 使用–level=level开关,其中level是debug、info、warning或error。
编程使用
穴居人被设计成可以从你自己的代码中使用,例如 作为大型验证过程的一部分,或作为web中单元测试的一部分 申请。
穴居人的工作是由manifestchecker类完成的。你实例化它 有两个助手:一个从url获取数据的函数 记录器获取记录消息的对象:
from caveman import ManifestChecker def get_url(url): ... logger = ... man_checker = ManifestChecker(get_url=get_url, logger=logger)
然后使用html页面的url调用其check\u manifest方法:
man_checker.check_manifest(url)
未返回值:输出已记录到记录器对象。 有关详细信息,请参见源代码中的docstrings。
django单元测试
作为编程使用的一个例子,这里有一种在django中使用穴居人的方法 测试套件:
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)
限制
Caveman只提取指定的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。