Python的存根库
项目描述
Pretend是一个用于简化Python存根的库。
什么是存根?
存根是编写测试的一种技术。您可能会听到它与模拟、伪造或替身等术语混在一起。基本上,存根是一个返回预定义响应的对象,而不是执行任何计算。
Martin Fowler在他的模拟不是存根文章中很好地解释了这些术语。
我如何安装pretend?
使用pip很容易!
$ pip install pretend
我如何使用pretend?
很简单,stub函数使创建存根变得容易
>>> from pretend import stub
>>> x = stub(country_code="US")
>>> some_function(x)
在这里,x将是一个具有单个属性country_code的对象,其值为"US"。与模拟不同,x不会响应任何其他属性或方法,也没有任何用于断言您访问的内容的方法。
如果您想向存根添加方法,只需提供一个函数给它
>>> from pretend import stub
>>> x = stub(country_code=lambda: "US")
>>> x.country_code()
'US'
需要注意的是,存根上的函数不携带self参数,这是因为存根应该返回预定义的值,而不是执行计算。
pretend的异常
有时您想存根的方法不返回值,而是引发异常。为了使这变得简单,pretend提供了一个辅助函数raiser,它可以像这样使用
>>> from pretend import stub, raiser
>>> x = stub(func=raiser(ValueError))
>>> x.func()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "pretend.py", line 74, in inner
raise exc
ValueError
为什么使用存根(stub)更好?
理想情况下,存根测试的是系统对特定输入的响应,而不是使用了哪个API。存根仍然需要你编写测试来检查计算结果,而不是寻找副作用。但这并不总是有效,因此有时你仍然需要模拟(例如,有时你确实想要检查副作用。)
我该如何放置我的存根?
如果你来自其他模拟库,你可能习惯于使用patch方法来放置模拟对象。pretend不包含这种功能,原因如下:a) 我们认为尽可能将存根作为参数传递而不是进行猴子补丁(monkey patch)是更好的选择;b) 我们认为当你确实需要猴子补丁时,你应该使用测试工具提供的工具。py.test包含这样的工具。
如果我真的需要记录调用呢?
如果你真的真的需要,pretend包含一个call_recorder实用工具
>>> from pretend import call_recorder, call
>>> f = call_recorder(lambda a: a + 2)
>>> f(3)
5
>>> assert f.calls == [call(3)]
是谁写的这个?
pretend是由Alex Gaynor编写的,他只是厌倦了没有好的存根工具。这个名字来自Idan Gazit。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
pretend-1.0.9.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c90eb810cde8ebb06dafcb8796f9a95228ce796531bc806e794c2f4649aa1b10 |
|
MD5 | ad53883ede48aeac7ae584f0de0240e8 |
|
BLAKE2b-256 | 3cf87c86fd40c9e83deb10891a60d2dcb1af0b3b38064d72ebdb12486acc824f |
pretend-1.0.9-py2.py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e389b12b7073604be67845dbe32bf8297360ad9a609b24846fe15d86e0b7dc01 |
|
MD5 | aaba76920da59aabf025a89cc515e1c7 |
|
BLAKE2b-256 | 491f3d4f0579913edd3ad5b23ad52fcc42531cb736ad52af2ba6c057da8785b6 |