HTTP(S)和SMTP测试服务器
httptestserver的Python项目详细描述
可以在python进程中运行的http(s)和smtp服务器。服务 从不同的线程以及应用程序和测试中,显示 线程安全的api,因此调用代码可以控制服务器的行为。
有时集成测试不能模拟socket.socket 功能避免了真正的网络,这部分解决了问题 提供一个真正的服务器,它易于使用并且能够执行真正的网络 以可控和可靠的方式进行通信。
功能:
- 与测试一起在不同的线程中运行。
- 控制服务器响应和行为。
- 在请求之后或期间访问服务器内部状态和数据。
- 支持https,它捆绑了一个自签名证书,可用于测试。
- SMTP支持,它将收集和分析您的所有传出电子邮件。
- 所有已执行请求/响应的历史记录。
支持python2.73.2,3.3和3.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
测试
要运行测试,只需使用tox或nose:
tox
nosetests
文档
要生成对docs目录的文档更改并运行make。 您需要安装sphinx和changelog包才能 能够运行生成文件。
cd docs
make html
open build/html/index.html