import db_connector_file
def run():
con=db_connector_file.My_DB_conn()
res=con.execute('select * from table_name')
print res.fetchone()
def mock_execute(sql):
res = mock.Mock(spec=cx_Oracle.Cursor)
if 'table_name' in sql:
res._next_result=[(2,)]
else:
res._next_result=[(10,)]
return res
with mock.patch('work.db_connector_file.My_DB_conn.execute', side_effect=mock_execute):
import work
work.run()
当我运行模块测试时,我得到了
Mock name='mock.fetchone()' id='69673144'
Process finished with exit code 0
尽管我希望它会返回
[(2,)]
有没有一种方法可以使我完成这项工作,并且不返回模拟而是返回带有测试值的模拟。
或
在模拟时有没有办法跳过'spec ='参数并显式地返回带有值的ora游标,以便fetchone正常工作