def setup_context(self, *args, **kwargs): """ Sets context for the request. :param T sender: the object sending the signal. :param extra: extra arguments passed by the signal. """ honeybadger.set_context(**self._generate_context())
def test_process_response(self): request = self.rf.get('test') request.resolver_match = self.url.resolve('test') response = Mock() honeybadger.set_context(foo='bar') self.middleware.process_request(request) self.middleware.process_response(request, response) self.assertDictEqual({}, honeybadger._get_context(), msg='Context should be cleared after response handling') self.assertIsNone(current_request(), msg='Current request should be cleared after response handling')
def test_process_response(self): request = self.rf.get('test') response = Mock() honeybadger.set_context(foo='bar') self.middleware.process_request(request) self.middleware.process_response(request, response) self.assertDictEqual( {}, honeybadger._get_context(), msg='Context should be cleared after response handling') self.assertIsNone( current_request(), msg='Current request should be cleared after response handling')
def test_reset_context_when_reporting(self, mock_hb): from flask.views import MethodView FlaskHoneybadger(self.app, report_exceptions=True, reset_context_after_request=True) honeybadger.set_context(foo='bar') class ErrorView(MethodView): def get(self): return 1 / 0 self.app.add_url_rule('/error', view_func=ErrorView.as_view('error')) self.app.test_client().get('/error?a=1&b=2&b=3') self.assert_called_with_exception_type(mock_hb, ZeroDivisionError) self.assertEqual(2, mock_hb.reset_context.call_count)
def test_dont_reset_context_when_not_reporting(self, mock_hb): from flask.views import MethodView FlaskHoneybadger(self.app, report_exceptions=False, reset_context_after_request=False) honeybadger.set_context(foo='bar') class ErrorView(MethodView): def get(self): return 1 / 0 self.app.add_url_rule('/error', view_func=ErrorView.as_view('error')) self.app.test_client().get('/error?a=1&b=2&b=3') mock_hb.notify.assert_not_called() mock_hb.reset_context.assert_not_called()
# Honeybadger for Python # https://github.com/honeybadger-io/honeybadger-python # # This file is an example of how to report unhandled Python exceptions to # Honeybadger. To run this example: # $ pip install honeybadger # $ HONEYBADGER_API_KEY=your-api-key python unhandled.py from __future__ import print_function from honeybadger import honeybadger # Uncomment the following line or use the HONEYBADGER_API_KEY environment # variable to configure the API key for your Honeybadger project: # honeybadger.configure(api_key='your api key') import logging logging.getLogger('honeybadger').addHandler(logging.StreamHandler()) def method_two(): mydict = dict(a=1) print(mydict['b']) def method_one(): method_two() if __name__ == '__main__': honeybadger.set_context(user_email="*****@*****.**") method_one()
# https://github.com/honeybadger-io/honeybadger-python # # This file is an example of how to report unhandled Python exceptions to # Honeybadger. To run this example: # $ pip install honeybadger # $ HONEYBADGER_API_KEY=your-api-key python unhandled.py from __future__ import print_function from honeybadger import honeybadger # Uncomment the following line or use the HONEYBADGER_API_KEY environment # variable to configure the API key for your Honeybadger project: # honeybadger.configure(api_key='your api key') import logging logging.getLogger('honeybadger').addHandler(logging.StreamHandler()) def method_two(): mydict = dict(a=1) print(mydict['b']) def method_one(): method_two() if __name__ == '__main__': honeybadger.set_context(user_email="*****@*****.**") method_one()