
文章目录
一、关于 Deal
Deal 是用于 design by contract (DbC) 和 检查值、异常和副作用的Python库。简而言之,交易使您能够编写bug的代码。
通过在代码中添加一些装饰器,您可以获得免费测试、静态分析、形式验证等等。阅读介绍开始。
- github : https://github.com/life4/deal
- 官方文档:https://deal.readthedocs.io/
特点
- 经典DbC:前置、后置、不变。
- 跟踪异常和副作用。
- 基于属性的测试。
- 静态检查器。
- 与pytest、flake8、sphinx和假设集成。
- 类型注释支持。
- 外部验证器支持。
- 导入模块的合同。
- 可以在生产中启用或禁用。
- 无色:只注释你想要的。因此,很容易集成到现有项目中。
- 多彩:每个命令中每段代码的语法高亮。
- 内存泄漏检测:deal确保纯函数不会在内存中留下意外对象。
- DRY:测试发现、错误消息生成。
- 部分执行:linter执行合约以静态检查可能的值。
- 形式验证:证明您的代码适用于所有输入(或找出何时不适用)。
- 零依赖运行时:分析工具有一些依赖关系,但生产中不需要任何依赖关系。
- 快速:每个代码更改都经过基准测试和分析。
- 可靠:该库具有100%的测试覆盖率,部分验证,并自2018年以来由多家公司在生产中运行。
二、安装
shell
python3 -m pip install --user 'deal[all]'
三、30秒内使用 Deal
python
# the result is always non-negative
@deal.post(lambda result: result >= 0)
# the function has no side-effects
@deal.pure
def count(items: List[str], item: str) -> int:
return items.count(item)
# generate test function
test_count = deal.cases(count)
现在我们可以:
- 运行
python3 -m deal lint
或flake8
以静态检查错误。 - 运行
python3 -m deal test
或pytest
生成并运行测试。 - 只需在项目中使用该函数并在运行时检查错误。
阅读更多的文档。
四、其它
贡献
欢迎投稿!您可以贡献的一些想法:
- 为linter添加新的检查。
- 改善文档。
- 添加更多测试。
- 提高性能。
- 找到bug?修好它!
- 写了一篇关于交易的文章?太好了。让我们把它添加到
README.md
中。 - 没有时间编码?别担心!只需告诉您的朋友和订阅者该项目。更多用户->更多贡献者->更多酷功能。
要在本地运行测试,您只需要任务。运行task all
来运行所有代码格式化程序、linter和测试。
谢谢你❤️
2025-03-19(三)