跳转到主要内容

声明式HTTP测试库

项目描述

https://github.com/cdent/gabbi/workflows/tests/badge.svg Documentation Status

Gabbi

发行说明

Gabbi是一个运行HTTP测试的工具,请求和响应以基于YAML的声明性形式表示。最简单的测试如下所示

tests:
- name: A test
  GET: /api/resources/id

有关设置请求头和体以及评估响应的许多特性和格式的详细信息,请参阅文档

Gabbi已在Python 3.7、3.8、3.9、3.10、3.11、3.12和pypy3上进行了测试。

可以使用unittest风格测试运行器、pytest或通过命令行使用gabbi-run脚本运行测试。

存在一个gabbi-demo仓库,它通过其提交历史提供了一个教程。该示例使用gabbi构建了一个简单的API,以促进测试驱动开发。

目的

Gabbi旨在弥合表示HTTP请求和预期响应的人可读YAML文件与基于Python的、面向对象的单元测试领域(类似于unittest模块及其派生模块)之间的差距。

每个YAML文件代表一个按顺序排列的HTTP请求列表以及预期的响应。这使得一个文件可以代表正在测试的API中的一个过程。例如

  • 创建一个资源。

  • 检索一个资源。

  • 删除一个资源。

  • 再次检索一个资源以确认它已删除。

同时,还可以要求gabbi只运行一个请求。如果它在测试序列中,YAML文件中先于它的测试将被运行(按顺序)。在单个过程中,任何测试只运行一次。并发处理确保一个文件在一个进程中运行。

这些功能意味着可以创建对人类(作为改进和开发API的工具)和自动化CI系统都很有用的测试。

测试和开发Gabbi

要开始,在克隆仓库后,您应该安装开发依赖项

$ pip install -r requirements-dev.txt

如果您希望保持事物的隔离,可以创建一个虚拟环境

$ virtualenv gabbi-venv
$ . gabbi-venv/bin/activate
$ pip install -r requirements-dev.txt

Gabbi配置为使用tox(通过requirements-dev.txt安装)进行开发和测试。要运行内置测试(YAML文件位于目录gabbi/tests/gabbits_*中,并由文件gabbi/test_*.py加载),您调用tox

tox -epep8,py37

如果您已安装依赖项(或预热了虚拟环境),您可以手动运行测试并在第一次失败时退出

python -m subunit.run discover -f gabbi | subunit2pyunit

可以通过在tox调用后指定它们来限制测试到单个模块

tox -epep8,py37 -- test_driver test_handlers

如果您希望避免运行连接到互联网主机的测试,将GABBI_SKIP_NETWORK设置为True

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分发

gabbi-3.0.0.tar.gz (221.4 kB 查看哈希值)

上传时间

构建分发

gabbi-3.0.0-py3-none-any.whl (214.0 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面