亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Python 中模擬 cx_Oracle 游標

如何在 Python 中模擬 cx_Oracle 游標

Helenr 2021-06-16 17:13:16
我在一個類中有兩個以下函數,我需要模擬數據庫連接和游標結果。cx_Oracle.connect 成功修補它按預期工作。但是游標、callfunc、fetch_all 不會被模擬。知道什么是正確的語法嗎?class dbconnect:    def db_connect(self, connection_details):        connection = cx_Oracle.connect(user_name,pwd,<connection_string>)        return connection    def execute_function(self, sqlFunction, args):        cursor = self.connection.cursor()        res=cursor.callfunc(sqlFunction, cursor.var(cx_Oracle.CURSOR), args)        results = {'headers' : [x[0] for x in res.description],            'data': res.fetchall()        }        cursor.close()        return results我的模擬代碼with mock.patch('dbconnect.cx_Oracle.connect') as mockOracle:   result_set = {}   mockOracle.cursor.callfunc.fetch_all = result_set
查看完整描述

1 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

您實際上根本不必“模擬”連接和光標!您可以自己簡單地對連接和游標進行子類化,如下所示:


class MyConnection(cx_Oracle.Connection):


    def cursor(self, scrollable=False):

        return MyCursor(self, scrollable)


class MyCursor(cx_Oracle.Cursor):


    def execute(self, sql, args):

        result = super(MyConnection, self).execute(sql, args)

        print("My mock execute...")

        return result

我不確定這是否是您的意圖,或者您是否知道這種可能性。有了它,您可以添加新功能,也可以覆蓋或擴展現有功能。


查看完整回答
反對 回復 2021-06-22
  • 1 回答
  • 0 關注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號