问题描述
我刚刚开始使用MysqLdb学习python模拟,此刻我有些困惑,我可能会犯一些愚蠢的错误。
class MyDB():
def __init__(self):
self.connect_to_db()
quick_query_a = self.query_db_A("xxxx (some query)")
quick_query_b = self.query_db_B("yyyyy (some query)")
def connect_to_db(self):
self.cnx_a = self._make_connect("DB_A","aaa","pppp")
self.cnx_a = self._make_connect("DB_B","bbb","pppp")
def _make_connect(self,host_add,user,pass ):
return MysqLdb.connect(host_add,pass)
def query_db_A(self,query):
#Do query from DB A
......
cur = self.cnx_a.cursor()
cur.execute(query)
self.cnx_a.commit()
result = cur.fetchall()
return result
def query_db_B(self,query):
#Do query from DB B
......
cur = self.cnx_b.cursor()
cur.execute(query)
self.cnx_b.commit()
result = cur.fetchall()
return result
我设法为只有1个连接的类编写了一个简单的单元测试
class Test(unittest.TestCase):
@patch('mymodule.MysqLdb.connect')
def testName(self,mock_sql_con):
mock_con = mock_sql_con.return_value
mock_cur = mock_con.cursor
mock_cur.return_value.fetchall.return_value = "MyResult_all"
mock_cur.return_value.fetchone.return_value = ['abc']
myTestsql = MyDB()
call= 'SELECT CONNECTION_ID();'
result = myTestsql.query_db_A(call)
assert result == "MyResult_all"
return
我是否在模拟sql连接的正确方法?我看到有一篇使用side_effect的帖子,但是如何在测试中指向正确的模拟诅咒?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)