zope的层。简化测试设置的测试
van.testing的Python项目详细描述
内容
testing提供了用于测试基于zope3/wsgi的应用程序的工具。 不使用zodb或本地实用程序。
Testing Utilities
这个测试模块最常用的是功能测试zope 应用。它提供了设置加载配置的层的工具 以及在层中设置wsgi_截获。
此测试是此类层的一部分(在van.testing.tests.functionalayer中设置):
>>> from wsgi_intercept import WSGI_HTTPConnection as HTTPConnection >>> conn = HTTPConnection('localhost', 80)>>> conn.request('GET', '/') >>> r = conn.getresponse() >>> print r.read() # doctest: +ELLIPSIS {'HTTP_ACCEPT_ENCODING': 'identity', 'HTTP_HOST': 'localhost', 'PATH_INFO': '/', 'QUERY_STRING': '', 'REMOTE_ADDR': '127.0.0.1', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': '', 'SERVER_NAME': 'localhost', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.1\r\n', 'wsgi.errors': <cStringIO.StringO object at ...>, 'wsgi.input': <cStringIO.StringI object at ...>, 'wsgi.multiprocess': 0, 'wsgi.multithread': 0, 'wsgi.run_once': 0, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)} Marker: MARKER
Layers
一些基本的图层对测试设置很有用。
>>> import os.path >>> from van.testing.layer import zcml_layer, null_layer
一个zcml层,它建立并删除一个zcml测试工具(但是 比zope.app.functional提供的简单:
>>> class ZCMLLayer: ... zcml = os.path.join(os.path.dirname(__file__), 'ftesting.zcml') >>> zcml_layer(ZCMLLayer)
提供了一些用于zope.testing的默认层,一个“空”层 具体来说什么都不做。这对于从其他层继承的层很有用 层,但不希望安装/拆卸功能运行两次(这是 zope.testing错误?):
>>> class ExampleNullLayer(ZCMLLayer): ... pass >>> null_layer(ExampleNullLayer)
此测试在van.testing.tests.zcmlayer层中运行,因此我们可以获取 “test”实用程序,但不是test_extra实用程序(有关 zcml层示例,具有以下功能:
>>> from zope.interface import Interface >>> from zope.component import queryUtility >>> queryUtility(Interface, name="test", default='None') 'MARKER' >>> queryUtility(Interface, name="test_extra", default='None') 'None'
3.0.0 (2009-10-28)
- 添加一个选项,使zcml层上有一个zcml_features属性,指示 加载zcml时要加载的功能。
2.0.1 (2009-04-07)
- 允许用户通过指定wsgi_intercept_层的域和端口 将这些属性添加到类中。
- fix testbrowser支持一点,使其执行更像 zope.testbrowser.testing.browser。
- 删除对本地组件注册表(zope.site)的支持。这就带来了 整个zodb作为zope.site的测试目前依赖于它。
2.0.0 (2009-04-01)
- 通过使用zope.configuration.xmlconfig设置zcml删除依赖项 而不是zope.app.appsetup。这会遗漏一些安全配置 但从较少的依赖中获得的胜利是巨大的。在我的测试中,没有任何测试 与此相关的问题。
- 添加wsgi_intercept层和结合zcml的functional_层 和wsgi_拦截层。