在 Python 中比较/断言表达式的替代语法。支持用于自定义比较的可插拔匹配器。
项目描述
概述
Compare 是一个紧凑的实用程序,它为比较数据值提供了一种替代的、富有表现力的语法。您是否一直在寻找摆脱陈旧的 XUnit 风格断言的方法,这种断言困扰着无处不在的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 标准库之外没有其他要求。
安装
安装比较的最简单和推荐的方法是使用 Pip。您可以使用 pip 从 PyPI 安装最新的稳定版本:
> pip install compare
如果你没有 pip,你可以使用 easy_install:
> easy_install compare
或者,您可以从PyPI 上的比较页面下载源包,解压缩并使用以下命令安装它:
> python setup.py install
如果您愿意,您可以从项目存储库中获取开发中(前沿但不稳定)版本compare.py并将其放入您的项目目录中。
你得到什么
当你安装包时,你会得到“expect” starter,这是一个简单的函数,允许你比较两个值,如果结果不符合你的期望,则失败。此启动器具有可扩展的匹配器,使您能够以 Pythonic BDD 方式描述预期结果。
当您为您的软件制定可执行规范时,比较会大放异彩。它可以帮助你保持你的思路,而不会屈服于以测试为中心的非 python 干扰,如“self.assertEqual(s)…”、“self.assertTrue”等。
这是一个在规范中使用“expect”结构时获得的可读性的简单示例。
> 猫你好.py:
greeting = 'Hello you'
> 猫 hello_specs.py:
from compare import expect
import hello
expect(hello.greeting).to_equal('Hello you')
如果您定义了一个未满足的期望,您将收到一个“未满足的期望”错误,该错误继承自 python AssertionError,因此它与通常的单元测试工具兼容。以下是此类错误的示例:
>>> 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匹配器不接受任何参数传递给可调用对象。
匹配器不接受自定义失败消息。
反馈
我欢迎任何有关错误的问题或反馈以及有关如何改进比较的建议。让我知道你对比较的看法。我在推 特上@RudyLattae。我很欣赏建设性的批评或击掌:)
您有改进的建议吗?然后请创建一个包含您希望看到的详细信息的问题。我会看一下它并与您合作,要么扼杀这个想法,要么实施它。
变更日志
0.2b – 2011-02-11
第一个公开测试版
添加了基本匹配器:to_be_less_than、to_be_less_than_or_equal_to、to_be_greater_than、to_be_greater_than_or_equal_to、to_be_none、to_be_truthy、to_be_falsy、to_raise
添加了“丰富的比较”匹配器:==、<、<=、>、>=
文档:核心 API + 简单用户指南。
0.1a – 2011-02-01
第一个公开的 alpha 版本