向http客户端添加单元测试
httptest的Python项目详细描述
高温试验
http测试的灵感来自golang的httptest包。支持包装异步
协程函数(async def
)。
用法
简单的HTTP服务器处理程序
importunittestimporturllib.requestimporthttptestclassTestHTTPServer(httptest.Handler):defdo_GET(self):self.send_response(200)self.send_header("Content-type","text/plain")self.end_headers()self.wfile.write(bytes("what up","utf-8"))classTestHTTPTestMethods(unittest.TestCase):@httptest.Server(TestHTTPServer)deftest_call_response(self,ts=httptest.NoServer()):withurllib.request.urlopen(ts.url())asf:self.assertEqual(f.read().decode('utf-8'),"what up")if__name__=='__main__':unittest.main()
异步支持
对unittest包的异步支持尚未在Python中实现。 python/issue32972。
如果您想快速添加asyncio
测试用例,可以导入helper
从intel/dffml开始。
importunittestimporturllib.requestfromdffml.util.asynctestcaseimportAsyncTestCaseimporthttptestclassTestHTTPServer(httptest.Handler):defdo_GET(self):self.send_response(200)self.send_header("Content-type","text/plain")self.end_headers()self.wfile.write(bytes("what up","utf-8"))classTestHTTPTestMethods(AsyncTestCase):@httptest.Server(TestHTTPServer)asyncdeftest_call_response(self,ts=httptest.NoServer()):withurllib.request.urlopen(ts.url())asf:self.assertEqual(f.read().decode('utf-8'),"what up")if__name__=='__main__':unittest.main()
在项目的setup.py
中,在tests_require
中添加dffml
。
setup(name='your_package',...tests_require=['httptest>=0.0.14','dffml>=0.1.2'])
自动安装
如果您正在制作一个python包,则需要将httptest
添加到
setup.py
文件的tests_require
部分
这样,当运行python setup.py test
setuptools将安装
httptest
如果尚未安装,请在程序包本地目录中。
setup(name='your_package',...tests_require=['httptest>=0.0.14'])