首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python模拟允许异常

问Python模拟允许异常
EN

Stack Overflow用户
提问于 2015-03-24 01:13:30
回答 1查看 243关注 0票数 0

我使用的是python mock库(python2.7,mock==1.0.1),当我模拟出我正在测试的代码的某些部分时,由于某种原因,mock会吞噬异常。

下面是一个示例:

代码语言:javascript
复制
#test.py
from django import test
from something import main_func
class TestCase(test.TestCase):
  @mock.patch('something.somewhere')
  def test_something(mock_somewhere):
    main_func()


#something.py
def somewhere(param):
  print param

def main_func():
  somewhere(None.missing_something)

所以AttributeError应该被提升,对吗?这个测试是在我的机器上通过的,实际上代码更复杂,Django模型应该被保存并存在。测试失败是因为模型不存在。

如果我在somewhere(None.missing_method)之前插入一个import ipdb; ipdb.set_trace(),那么我可以看到AttributeException被抛出了,但是它在测试中没有显示出来。

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2015-03-24 01:19:06

我认为你需要使用一个'spec‘,比如autospec=True

http://www.voidspace.org.uk/python/mock/patch.html

这将确保,如果您试图访问原始对象上不存在的属性,则生成的mock将引发属性错误,否则mock将为任何attr访问返回一个新的mock

例如

代码语言:javascript
复制
from something import main_func

class TestCase(test.TestCase):
  @mock.patch('something.somewhere', autospec=True)
  def test_something(mock_somewhere):
    main_func()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29216251

复制
相关文章

相似问题

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