Ali*_*Ali 24 python unit-testing mocking
在我的python代码中,我检查其中一个参数的类型,以确保它是我期望的类型.例如:
def myfunction(dbConnection):
if (type(dbConnection)<>bpgsql.Connection):
r['error'] += ' invalid database connection'
Run Code Online (Sandbox Code Playgroud)
我想通过模拟连接进行测试.有没有办法让模拟对象伪装成正确的类型?
Ali*_*Ali 56
尽管如此,看起来你们不太对劲!
我可以使用鸭子打字,但有一种方法可以做我想要做的事情:
来自http://docs.python.org/dev/library/unittest.mock.html
使用类或实例作为规范或spec_set的模拟对象能够通过isintance测试:
>>>
>>> mock = Mock(spec=SomeClass)
>>> isinstance(mock, SomeClass)
True
>>> mock = Mock(spec_set=SomeClass())
>>> isinstance(mock, SomeClass)
True
Run Code Online (Sandbox Code Playgroud)
所以我的示例代码将是:
m = mock.MagicMock(spec=bpgsql.Connection)
isinstance(m, bpgsql.Connection)
Run Code Online (Sandbox Code Playgroud)
这返回True
所有这一切,我不是在争论python中的严格类型检查,我说如果你需要检查它你可以做它,它也适用于测试和嘲笑.
归档时间: |
|
查看次数: |
10047 次 |
最近记录: |