如何解决如何为同一类中多次调用的函数模拟补丁?
我刚刚开始使用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 举报,一经查实,本站将立刻删除。