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如何在Kotlin中加速从短数组到位图的转换   java如何计算用户从5个组合框中选择的项目的总成本   如何实现Java图像处理来进行模板匹配?   java Android Studio Gradle找不到'com'。安卓支持:设计:22.2.0'(Android设计支持库)   Tomcat上的hibernate Java持久性没有名为EntityManager的持久性提供程序   Weblogic中有两个EAR的java Log4j日志记录问题   Java忽略字符串   java stringbuffer和“0&”导致截断或转义   在java中用猜测的字母替换破折号   java使用枚举查找长字符串描述   在Android Studio中选择图像后,java应用程序退出(未调用OnActivityResult)   java什么是类似于Rails的面向对象桌面应用程序框架?   java有没有一种方法可以在调试时永久更改变量的值,从而在后续调用中不被重写?   java NullPointerException从数据库获取数据时,使用注释调用Struts 2中的操作