Python Mocking Isolation Library for Testing
项目描述
eyam是一个Python模块,它通过模拟模块中大部分内容(来自Michael Foord的Mock库)来提供对象、函数和方法的隔离。它消除了对单个模拟测试方法所依赖的所有对象的需求。执行操作后,您可以使用mock.py库提供的工具以通常的方式检查被测试代码的调用。
mock在Python 2.6版本上进行了测试。
eyam易于使用,并设计为与Michael Foord的Mock库一起使用。
您可以模拟类、实例、函数和方法。语法简单
>>> from eyam import isolate >>> import tests.isolationfixture as mod>>> def dump(expr): ... print '%s == %r' % (expr, eval('mod.%s' % expr))
整个类可以被隔离
>>> with isolate(mod, 'UnmockedClass'): #doctest:+ELLIPSIS ... dump('MyClass') ... dump('UnmockedClass') MyClass == <mock.ClassMock object at 0x...> UnmockedClass == <class 'tests.isolationfixture.UnmockedClass'>
隔离类的实例可以正常工作。模拟类的实例是Mock对象,所以它们的方法返回Mock对象
>>> with isolate(mod, 'UnmockedClass'): #doctest:+ELLIPSIS ... dump('MyClass().bogus()') ... dump('UnmockedClass().instance_method()') MyClass().bogus() == <mock.Mock object at 0x...> UnmockedClass().instance_method() == 'return value of UnmockedClass.instance_method()'
实例也可以被隔离
>>> with isolate(mod, 'unmocked_instance'): #doctest:+ELLIPSIS ... dump('my_instance') ... dump('unmocked_instance') my_instance == <mock.Mock object at 0x...> unmocked_instance == <tests.isolationfixture.MyClass object at 0x...>
实例的单独方法可以被隔离。该实例变成Mock对象,但原始方法被重新绑定到它
>>> with isolate(mod, 'my_instance.unmocked_method'): #doctest:+ELLIPSIS ... dump('my_instance') ... dump('my_instance.unmocked_method') ... dump('my_instance.unmocked_method()') my_instance == <mock.Mock object at 0x...> my_instance.unmocked_method == <bound method ?.unmocked_method of <mock.Mock object at 0x...>> my_instance.unmocked_method() == 'return value of MyClass.unmocked_method'
实例的所有其他方法和属性都被模拟。
>>> with isolate(mod, 'my_instance.unmocked_method'): #doctest:+ELLIPSIS ... dump('my_instance.instance_method') ... dump('my_instance.instance_method()') my_instance.instance_method == <Mock name='mock.instance_method' id='...'> my_instance.instance_method() == <mock.Mock object at 0x...>
未隔离的实例变成Mock对象,它们的返回Mock对象
>>> with isolate(mod, 'my_instance.unmocked_method'): #doctest:+ELLIPSIS ... dump('unmocked_instance.instance_method') ... dump('unmocked_instance.instance_method()') unmocked_instance.instance_method == <Mock name='mock.instance_method' id='...> unmocked_instance.instance_method() == <mock.Mock object at 0x...>
最后,模块级别的函数也可以被隔离
>>> with isolate(mod, 'unmocked_function'): #doctest:+ELLIPSIS ... dump('unmocked_function') ... dump('unmocked_function()') unmocked_function == <function unmocked_function at 0x...> unmocked_function() == 'return value of unmocked_function'
其他功能使用模拟对象替代
>>> with isolate(mod, 'unmocked_function'): #doctest:+ELLIPSIS ... dump('my_function') ... dump('my_function()') my_function == <mock.Mock object at 0x...> my_function() == <mock.Mock object at 0x...>
该发行版包含测试和文档。测试需要 unittest2 运行。
项目详情
关闭
eyam-0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c2c9d3bd21549aab89a9d4b7d1b30ff6f8691d78c1ea58d1ebbb1ca676a0102b |
|
MD5 | 36ae3cb36dfefff85173cbb18ba56708 |
|
BLAKE2b-256 | 63c6f2b188be47797b0f80848cef65f37d17bb439ba96ec5b8b486a8350e0fee |