这有效
test_app.py
from flask import Flask, gapp = Flask(__name__)def connect_db(): print 'I ended up inside the actual function' return object()@app.before_requestdef before_request(): g.db = connect_db()@app.route('/')def root(): return 'Hello, World'test.py
from mock import patchimport unittestfrom test_app import appdef not_a_db_hit(): print 'I did not hit the db'class FlaskTest(unittest.TestCase): @patch('test_app.connect_db') def test_root(self, mock_connect_db): mock_connect_db.side_effect = not_a_db_hit response = app.test_client().get('/') self.assertEqual(response.status_pre, 200)if __name__ == '__main__': unittest.main()因此,这将打印出“我没有命中数据库”,而不是“我最终进入了实际功能”。显然,你需要使模拟适应你的实际用例。



