使用 Python 3.5, requests==2.18.4, Flask==0.12.2, urllib3==1.22
在我的主
server.py
文件中,我有一个
some_method
的方法,它应该向一些带有一些数据的URL发出一个
POST
。
def some_method(url, data):
error = None
response = requests.post(url, json=data)
except requests.exceptions.ConnectionError as e:
app.logger.error(...)
response = None
error = str(e)
return error, response
服务器文件定义了。替换代码4】,而some_method
是由@app.route(... methods=['PATCH'])
调用的。
如果这个方法抛出一个错误,路由最终会返回一个500
。
测试是从用import server
和app = server.app
导入应用程序的测试文件,使用unittest
,并导入mock.patch
。
我能够测试整个应用程序的行为,通过一个测试显示,当方法返回错误时,应用程序的路由行为符合预期,并且看到路由在正确的地方终止。
class ServerTestCase(unittest.TestCase):
@patch('server.some_method')
def test_route_response_status_500_when_throws(self, mock_response):
mock_response.return_value = 'some_error_string', None
response = self.app.patch(some_url, some_data, content_type='application/json')
self.assertEqual(response.status_code, 500)
然而,我真的希望能有另一个测试来测试some_method
的隔离。
Mock requests.post
to throw requests.exceptions.ConnectionError
Show that the method logs an error (I know I can mock my app.logger
and assert that it logged during the execution)