MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / mock_connection

Function mock_connection

test/engine/test_reconnect.py:52–126  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

50
51
52def mock_connection():
53 def mock_cursor():
54 def execute(*args, **kwargs):
55 if conn.explode == "execute":
56 raise MockDisconnect("Lost the DB connection on execute")
57 elif conn.explode == "interrupt":
58 conn.explode = "explode_no_disconnect"
59 raise MockExitIsh("Keyboard / greenlet / etc interruption")
60 elif conn.explode == "interrupt_dont_break":
61 conn.explode = None
62 raise MockExitIsh("Keyboard / greenlet / etc interruption")
63 elif conn.explode in (
64 "execute_no_disconnect",
65 "explode_no_disconnect",
66 ):
67 raise MockError(
68 "something broke on execute but we didn't lose the "
69 "connection"
70 )
71 elif conn.explode in (
72 "rollback",
73 "rollback_no_disconnect",
74 "explode_no_disconnect",
75 ):
76 raise MockError(
77 "something broke on execute but we didn't lose the "
78 "connection"
79 )
80 elif args and "SELECT" in args[0]:
81 cursor.description = [("foo", None, None, None, None, None)]
82 else:
83 return
84
85 def close():
86 cursor.fetchall = cursor.fetchone = Mock(
87 side_effect=MockError("cursor closed")
88 )
89
90 cursor = Mock(
91 execute=Mock(side_effect=execute), close=Mock(side_effect=close)
92 )
93 return cursor
94
95 def cursor():
96 while True:
97 yield mock_cursor()
98
99 def rollback():
100 if conn.explode == "rollback":
101 raise MockDisconnect("Lost the DB connection on rollback")
102 if conn.explode == "rollback_no_disconnect":
103 raise MockError(
104 "something broke on rollback but we didn't lose the "
105 "connection"
106 )
107 else:
108 return
109

Callers 1

connectFunction · 0.85

Calls 1

cursorFunction · 0.70

Tested by

no test coverage detected