python中的存根库
pretend的Python项目详细描述
假装是一个库,使使用python进行stubing变得更容易。
什么是树桩?
stubing是一种编写测试的技术。你可能会听到这个词和 模仿,假货,或双倍。基本上存根是一个返回预先屏蔽的对象 响应,而不是做任何计算。
马丁·福勒很好地解释了他的Mocks Aren’t Stubs中的术语。 文章。
如何安装pretend?
使用pip很简单!
$ pip install pretend
如何使用pretend?
很简单,stub函数使创建存根变得简单:
>>> frompretendimportstub>>> x=stub(country_code="US")>>> some_function(x)
这里x将是一个具有单个属性的对象country_code,该属性具有 值"US"。与mock不同,x不会响应任何其他属性 或者方法,也没有任何方法来断言 已访问。
如果要向存根添加方法,只需提供一个函数即可:
>>> frompretendimportstub>>> x=stub(country_code=lambda:"US")>>> x.country_code()'US'
必须注意stub上的函数不接受self 参数,这是因为存根应该返回预先设置好的值,而不是 做计算。
与pretend
有时要存根的方法不返回值,而是引发 例外。为了简化这个过程,pretend提供了一个helper函数, raiser,可以这样使用:
>>> frompretendimportstub,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 innerraiseexcValueError
为什么留茬更好?
理想情况下,stubing测试系统对特定输入的响应,而不是 而不是使用哪个api。stubing仍然需要您编写检查 计算的结果,而不是寻找副作用。这个 但并不总是有效,所以有时仍然需要嘲笑(例如。 有时你真的想检查一下副作用。)
我怎样才能把存根放好?
如果您来自其他模拟库,那么您可能已经习惯了patch 方法来放置模拟。pretend不包含这样的内容, a)我们认为,在可能的情况下,最好将存根作为论据,而不是 我们相信当你需要的时候 猴子把东西修补好你应该用你提供的东西 测试工具。py.test包括such a tool。
如果我真的需要录电话怎么办?
如果您真的需要,pretend包含一个call_recorder实用程序:
>>> frompretendimportcall_recorder,call>>> f=call_recorder(lambdaa:a+2)>>> f(3)5 >>> assertf.calls==[call(3)]
是谁写的?
pretend作者是亚历克斯·盖诺,他只是厌倦了没有一个好的树桩 python的工具。名字来自伊丹·加齐特。