wsgi_intercept安装wsgi应用程序来代替真正的uri进行测试。

wsgi-intercept的Python项目详细描述


安装一个wsgi应用程序来代替真正的主机进行测试。

简介

测试wsgi应用程序有时需要在 本地主机和端口,然后将测试代码指向该地址。 相反,这个库允许您拦截对任何特定主机/端口的调用 组合并重定向到可导入的WSGI application 你的测试程序。因此,可以避免生成多个进程或 用于测试Web应用程序的线程。

支持的库

wsgi_intercept在python 2.7中与各种http客户端一起工作, 3.4及以上,在皮比。

  • urllib2
  • urllib.request
  • httplib
  • http.client
  • httplib2
  • 请求
  • urllib3

它是如何工作的?

wsgi_intercept通过将httplib.HTTPConnection替换为 子类,wsgi_intercept.WSGI_HTTPConnection。那么这个班 通过以下方式将特定的服务器/端口组合重定向到wsgi应用程序 模拟套接字。如果没有为主机和端口注册截获 请求时,这些请求将传递给标准处理程序。

使用截获的最简单方法是导入适当的子类 ,并将其用作 使用与 子类。例如:

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类很可能 对于大多数用例更容易使用。

注意

app_create_fn是返回wsgi的函数对象 应用程序;script_name在wsgi中变成SCRIPT_NAME。 应用程序的环境(如果已设置)。

注意

如果在环境中设置了http_proxyhttps_proxy。 这可能会对某些被截取的库造成困难。 如果正在使用请求或urllib,这些将引发异常 如果设置了其中一个变量。

注意

如果wsgi_intercept.STRICT_RESPONSE_HEADERS设置为True 然后,应用程序发送的响应头将被检查到 确保它们的类型是str本机的 python,根据pep 3333的要求。默认值是False(到 保持向后兼容性)

安装

pip install -U wsgi_intercept

截获的包

不幸的是,每个http客户端库都使用自己的特定 进行http调用的机制,因此各个实现是 需要。现在有httplib2的实现, urllib3requests在python 2和3中,urllib2httplib在python 2和urllib.request和^{tt24}中$ 在python 3中。

如果您使用的是python 2并且需要对不同http的支持 客户端,需要wsgi_intercept<0.6的版本。早期版本 包括对webtestwebunitzope.testbrowser的支持。

找出如何使用拦截的最佳方法是检查 the tests。提供更全面的文档 请求。

历史记录

根据伊恩·比金的帖子,提图斯 布朗把一张in-process HTTP-to-WSGI interception mechanism 他自己的网络测试系统,twill。因为这个装置很漂亮 generic——它在httplib级别工作——titus决定尝试添加 它包含在所有的python web测试框架中。

结果就是Python2版本的wsgi intercept。库马尔·麦克米兰 后来接手维修。

当前版本使用python 2.7、3.4、3.5、3.6和pypypy进行测试 是由Chris Dent组装的。测试和文档改进 来自Sasha Hart

项目主页

这个项目就在GitHub上。请提交所有错误、修补程序, 测试失败,等等,使用问题跟踪程序。

其他文档可在^{a8上获得}。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
安卓 studio安装的java Unity本机广告   java如何将映射转换为对象   java我试图使用rest控制器从h2数据库中检索记录,但它说没有数据集   反思为什么会抛出java。lang.InstanceException?   在opensuse中找不到Java/javac   java为Android上的谷歌地图添加了5900多个标记。如何有效地做   java如何在if语句中使用循环   java如何在JPA(Hibernate)中映射一对多关系和复合主键?   如何在Java中读取和写入外部进程?   Java线程。睡眠时间最短   java使用EclipseGradle插件如何离线托管和使用依赖项(库jar文件)   java为什么虚拟引用在排队时没有被清除?   java无法理解如何创建用于响铃报警的取消按钮   java解析不应通过注入容器错误发生   java Toast或ProgressDialog不显示   java在自定义对象上使用优先级队列的更好方法   java格式的。wmv文件。(或者任何视频文件都很好)   从页面调用另一个侦听器后,不会调用java JSF<f:ajax>侦听器   java注释ConfigApplicationContext不能多次刷新有什么原因吗?