首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >模拟类与方法

模拟类与方法
EN

Stack Overflow用户
提问于 2018-06-05 04:56:40
回答 1查看 151关注 0票数 0

我想模拟一个python对象-psycopg2来测试我的类。

当我打印object - dir(conn)时,我看到connect、extras等都列出了。

conn = mock.MagicMock(psycopg2.connect)

结果:

['BINARY', 'Binary', 'DATETIME', 'DataError', 'DatabaseError', 'Date',
'DateFromTicks', 'Error', 'IntegrityError', 'InterfaceError',
'InternalError', 'NUMBER', 'NotSupportedError', 'OperationalError',
'ProgrammingError', 'ROWID', 'STRING', 'Time', 'TimeFromTicks',
'Timestamp', 'TimestampFromTicks', 'Warning', '__builtins__',
'__doc__', '__file__', '__libpq_version__', '__name__', '__package__',
'__path__', '__version__', '__warningregistry__', '_connect', '_ext',
'_ipaddress', '_json', '_psycopg', '_range', 'apilevel',
'assert_any_call', 'assert_called', 'assert_called_once',
'assert_called_once_with', 'assert_called_with', 'assert_has_calls',
'assert_not_called', 'attach_mock', 'call_args', 'call_args_list',
'call_count', 'called', 'configure_mock', 'connect', 'extensions',
'extras', 'method_calls', 'mock_add_spec', 'mock_calls', 'paramstyle',
'reset_mock', 'return_value', 'side_effect', 'threadsafety', 'tz',
'warn']

现在,当我想设置execute方法的side_effect返回值时。

conn.cursor().execute().side_effect = psycopg2.DatabaseError

我得到了这个错误:

AttributeError: Mock object has no attribute 'cursor'

新代码:-

pg = mock.MagicMock(psycopg2)
print dir(pg())
print dir(pg.connect)
pg.connect()

输出

AttributeError: Mock object has no attribute 'cursor'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 05:26:58

您需要配置conn的返回值,而不是conn本身,因为您模拟的是函数connect

conn().cursor().execute().side_effect = psycopg2.DatabaseError
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档