HTTP(S)和SMTP测试服务器

httptestserver的Python项目详细描述


Latest Pypi versionDocumentation StatusLast build status

可以在python进程中运行的http(s)和smtp服务器。服务 从不同的线程以及应用程序和测试中,显示 线程安全的api,因此调用代码可以控制服务器的行为。

有时集成测试不能模拟socket.socket 功能避免了真正的网络,这部分解决了问题 提供一个真正的服务器,它易于使用并且能够执行真正的网络 以可控和可靠的方式进行通信。

功能:

  • 与测试一起在不同的线程中运行。
  • 控制服务器响应和行为。
  • 在请求之后或期间访问服务器内部状态和数据。
  • 支持https,它捆绑了一个自签名证书,可用于测试。
  • SMTP支持,它将收集和分析您的所有传出电子邮件。
  • 所有已执行请求/响应的历史记录。

支持python2.73.23.33.4

功能

返回正在运行的服务器实例的函数:

>>>server=start_server()>>>server.host'127.0.0.1'

或用于有限用途的上下文管理器:

>>>withhttp_server()asserver:...server.host'127.0.0.1'
>>>withsmtp_server()asserver:...server.inbox[]
< H2>混炼类

包含工作服务器的MIXIN为^ {TT3}$。

importrequestsfromhttptestserverimportHttpsTestServerclassTestApplication(HttpsTestServer):# Test what was actually get by the serverdeftest_it_should_send_headers(self):headers={'key':'value'}requests.get(self.default_url,headers=headers)assertself.server.data['headers']['key']=='value'# Control server responsesdeftest_it_should_parse_json_response(self):self.server.data['headers']={'Content-Type':'application/json'}self.server.data['response_content']="{'key': 'value'}"response=requests.get(self.default_url)assertresponse.json()=={'key':'value'}# Make the server behave as you wantdeftest_it_should_raise_timeout_at_2s_wait(self):self.server.data['response_timeout']=2try:requests.get(self.default_url,timeout=1)exceptrequests.exceptions.Timeout:passelse:assertFalse# Access to server's requests/responses historydeftest_it_should_make_two_requests(self):requests.get(self.default_url)requests.get(self.default_url+'2')assertlen(self.server.history)==2assertself.server.history[-1]['path']==self.default_url+'2'

发展

为了获得开发环境,创建一个virtualenv并安装 所需的要求。

virtualenv env
env/bin/activate
pip install -r dev-requirements.txt

包含的证书是使用ssl生成的:

openssl req -new -x509 -keyout server.pem -out server.pem -days 40000 -nodes

测试

要运行测试,只需使用toxnose

tox
nosetests

文档

要生成对docs目录的文档更改并运行make。 您需要安装sphinxchangelog包才能 能够运行生成文件。

cd docs
make html
open build/html/index.html

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

推荐PyPI第三方库


热门话题
java使用McClickListener单击了什么元素   Java时间戳在Oracle时间戳中不同情况下存储12 PM的奇怪行为   java无法使用事件总线对运行在不同机器上的垂直体进行通信   java Mockserver:收到请求后进行回调   java无法将Json字符串转换为Map<string,Object>   java如何按升序排列输出?   java视图行,带有oracle键。jbo。在SrCategoryParentIterator中找不到键[300100120394155]   javafxmysql连接示例   java正在等待加载完成   java是否可以将同一个有状态会话bean实例注入多个其他会话bean?   java无法让万向节检测离开或进入区域   使用JavaCV和OpenCV的java提供了dyld:lazy符号绑定失败:找不到符号:__sincos_stret   xml解析无法使用Java读取xml文档   java无法更改工具栏的颜色   javaapachesshd和JSCH   java无法在firebase存储中检索图像url   java问题与executeUpdate   同一应用程序中不同活动之间的java SharedReference