python中的存根库

pretend的Python项目详细描述


https://secure.travis-ci.org/alex/pretend.png

假装是一个库,使使用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的工具。名字来自伊丹·加齐特。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java爬虫获取外部网站搜索结果   java Bluestack未连接到eclipse   java如何从ConstraintViolationException Hibernamte获取数据库字段名   HttpResponse HttpResponse=httpClient引发java运行时错误。执行(httpPost);   Jama中矩阵的java点积和叉积   java有什么方法可以唯一地识别可扩展设备吗?   java我需要用*来写我的名字,但我不断遇到一个错误,我对编码很陌生   java变量是在内部类中访问的。需要被宣布为最终决定。但我不想宣布最终结果   java如何缩短base64图像字符串,Android?   JavaSpringMVC:计划方法不自动触发   图形学习Java 2D API的好资源是什么?   如何在java中对方法进行排队   java JavaFX多行   java Selenium无法在[链接]上找到基于CSS元素的密码字段元素http://www.cartasi.it/gtwpages/index.jsp   Java中的equals()和hashCode()契约   软删除情况下的java Hibernate二级缓存   java为什么这段代码要两次调用这些方法?