python中比较/断言表达式的替代语法。支持用于自定义比较的可插入匹配器。

compare的Python项目详细描述


概述

compare是一个紧凑的实用程序,它提供了一个替代的、有表现力的 比较数据值的语法。你一直在寻找逃跑的机会吗 从陈腐的许尼特风格断言,瘟疫无处不在的存在unittest? 你可能已经找到了你需要的东西。我请你看看这个 没什么用处。如果它适合你的风格,你可以把它作为一个附加服务 替换python中“self.assert…”风格的断言。

compare api公开了expect构造,该构造允许 将值与可读和可扩展语法进行比较。它是设计的 作为独立的可选断言语法。因此你可以使用它 就像你最喜欢的测试/规范框架一样。

文档http://packages.python.org/compare

项目源代码https://github.com/rudylattae/compare

pypi页http://pypi.python.org/pypi/compare

功能

  • 提供用于比较值的基本匹配项集
  • 使用自定义匹配器易于扩展
  • 打包为一个下拉式模块

要求

compare的核心实现是一个没有 除了Python Standard Library之外的其他要求。

安装

安装compare的最简单且推荐的方法是使用pip。您可以安装 pypi的最新稳定版本,带有pip:

> pip install compare

如果您没有PIP,可以使用Easy_安装:

> easy_install compare

或者,您可以从compare page on PyPI下载源包, 提取并使用以下命令安装:

> python setup.py install

如果你愿意,你可以抓住发展中的(前沿但不稳定) 版本compare.py来自项目存储库,并将其放入您的项目目录中。

你得到的

安装包时,您将获得“expect”启动程序,一个简单的 函数,允许您比较两个值,如果结果是 不符合你的期望。这个启动程序有可扩展的匹配器 使您能够以pythonic bdd的方式描述预期的结果。

当你在制定可执行的规范时,比较是最亮的 你的软件。它有助于你保持思想的流动而不屈服于 像“self.assertequal(s)…”这样的测试集中的非pythonic分布, “self.asserttrue”等

下面是一个小例子,说明当您 在规范中使用“expect”构造。

>;cat hello.py

greeting = 'Hello you'

>;cat hello_specs.py

from compare import expect
import hello

expect(hello.greeting).to_equal('Hello you')

如果定义了一个未满足的期望,则会出现“未满足的期望”错误 它继承自python断言错误,因此它与通常的unittest兼容。 工具。下面是这样一个错误的示例:

>>> from compare import expect
>>> opts = ['foo', 'bar', 'baz']
>>> expect(opts).to_contain('BAT')
Traceback (most recent call last):
    ...
UnmetExpectation: Expected ['foo', 'bar', 'baz'] to contain 'BAT'

缺少什么

expect语法还没有一个干净的方法来否定匹配器。这个功能是 计划下一个版本。预期用途示例:

expect(['a', 'c', 'd']).NOT.to_contain('b')

to_return匹配器不接受传递给可调用的任何参数。

匹配器不接受自定义失败消息。

反馈

我欢迎任何关于bug的问题或反馈,以及关于如何 改进比较。让我知道你对比较的看法。我在推特上 @RudyLattae。我欣赏建设性的 临界值或高五度:)

你有改进的建议吗?那么请create an issue详细说明 你想看的东西。我会看一看然后和你一起去杀 想法或实现它。

更改日志

0.2b–2011年2月11日

  • 首次公开测试版
  • 增加了基本匹配者:小于,小于或等于,大于,大于或等于ISE
  • 添加了“丰富比较”匹配项:==,<;,<;=,>;,>;=
  • 文档:核心api+简单用户指南。

0.1a–2011-02-01

  • 首次公开发行alpha

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

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素