wsgi_intercept会在测试中将一个WSGI应用程序安装到代替真实URI的位置。
项目描述
为测试将WSGI应用程序安装到替代真实主机的位置。
介绍
测试WSGI应用程序有时需要在一个本地主机和端口上启动服务器,然后将您的测试代码指向该地址。相反,这个库允许您拦截对任何特定主机/端口组合的调用,并将它们重定向到您的测试程序可导入的WSGI应用程序。因此,您可以避免在测试Web应用程序时启动多个进程或线程。
支持的库
wsgi_intercept 在Python 2.7、3.7及更高版本和pypy中与各种HTTP客户端一起工作。
urllib2
urllib.request
httplib
http.client
httplib2
requests
urllib3 (小于2.0.0,urllib3 2支持正在进行中)
它是如何工作的?
wsgi_intercept 通过用子类 wsgi_intercept.WSGI_HTTPConnection 替换 httplib.HTTPConnection 来工作。然后,该类通过模拟套接字将特定的服务器/端口组合重定向到 WSGI 应用程序。如果未为请求的主机和端口注册拦截,则将这些请求传递给标准处理程序。
使用拦截的最简单方法是导入相应的 ~wsgi_intercept.interceptor.Interceptor 子类,并将其用作与子类相关的库中使用的 Web 请求的上下文管理器。例如
import httplib2 from wsgi_intercept.interceptor import Httplib2Interceptor from mywsgiapp import app def load_app(): return app http = httplib2.Http() with Httplib2Interceptor(load_app, host='example.com', port=80) as url: response, content = http.request('%s%s' % (url, '/path')) assert response.status == 200
拦截器类还可以直接用于安装拦截。有关更多信息,请参阅模块文档。
旧版本需要使用函数 add_wsgi_intercept(host, port, app_create_fn, script_name='') 和 remove_wsgi_intercept(host,port) 指定哪些 URL 应该重定向到哪些应用程序。这些方法仍然可用,但对于大多数用例,Interceptor 类可能更容易使用。
安装
pip install -U wsgi_intercept
被拦截的包
不幸的是,每个 HTTP 客户端库都有自己的特定机制来执行 HTTP 调用,因此需要单独的实现。目前,有 Python 2 和 3 的 httplib2、urllib3(小于 2.0.0)和 requests 的实现,以及 Python 2 的 urllib2 和 httplib,以及 Python 3 的 urllib.request 和 http.client。
如果您正在使用 Python 2 并需要支持不同的 HTTP 客户端,则需要 wsgi_intercept<0.6 版本。早期版本包括对 webtest、webunit 和 zope.testbrowser 的支持。
了解如何使用拦截的最佳方式是检查 测试。如有需要,提供更全面的文档。
历史
根据 Ian Bicking 的 “最佳 Web 测试框架” 文章,Titus Brown 为自己的 Web 测试系统 twill 创建了一个进程内的 HTTP-to-WSGI 拦截机制。由于该机制相当通用——它在 httplib 层面上工作——Titus 决定尝试将其添加到所有其他 其他 Python Web 测试框架中。
wsgi-intercept 的 Python 2 版本就是由此产生的结果。Kumar McMillan 后续接管了维护工作。
当前版本已与Python 2.7、3.5-3.11以及pypy和pypy3进行过测试。该项目由Chris Dent组装。测试和文档改进由Sasha Hart完成。
项目主页
该项目托管在GitHub上。请使用问题跟踪器提交所有错误、补丁、失败的测试等。
更多文档可在Read The Docs上找到。
项目详情
wsgi_intercept-1.13.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 79bd6c639ab11f7eabe5d18ad9a20f62ee82a1c435124a876cffd8038f6c24c1 |
|
MD5 | 32c8c55211b8e3a6b377bb44c5669633 |
|
BLAKE2b-256 | 4aed28202fddeff86871b8a8d1fbb32878fe9df5592d5fd0fbac4ab81764202a |
wsgi_intercept-1.13.1-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4ed944d8a9ff5f0f122fab746d627654841f8a768e0f9b014cf2bbd50efbb4aa |
|
MD5 | 9597c4fa463c3eda52dcd5070364396a |
|
BLAKE2b-256 | 197287e0496e11418f9252bfd391af69b56f1658555fbfc960ed1b32097e7378 |