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如何设计自己的类型?   java Dagger2找不到带注释的方法   Java 8的模式匹配接口显示编译器警告   java创建intellij 15的可移植版本   java Spring STS 3.6.1和Gradle插件   java不支持列表。删除()或列表。removeAll()释放内存使用率?   java是所有静态方法还是单个实例?   java当我们在没有sparql的情况下使用jena时,如何在RDF中检索对象的值?   java如何使用底部导航视图引用片段和活动?   在tomcat中运行jsp文件时出现java错误?   java Android使用GoogleAppClient获取用户位置纬度和经度   java如何正确地重用在其他功能类中编写的方法?   hadoop HBase java。木卫一。java客户端放置记录时的EOFEException