restfulapi的简单测试

tavern的Python项目详细描述


更容易进行API测试

tavern是pytest插件、命令行工具和python库,用于 API的自动化测试,简单、简洁、灵活 基于yaml的语法。很容易开始,而且 可定制用于复杂测试。tavern支持测试restfulapi 以及基于mqtt的api。

使用酒馆的最好方法是 pytest 。酒馆配有 pytest插件,所以你只需要安装pytest和 tavern,在 .tavern.yaml 文件中编写测试并运行pytest。这个 意味着您可以访问所有pytest生态系统并允许您 各种各样的事情,比如定期对测试服务器运行测试 报告失败或生成HTML报告。

您还可以将tavern集成到自己的测试框架中,或者 使用python库的集成设置,或使用命令行 工具, 酒馆ci 带有bash脚本和cron作业。

要了解更多信息,请查看 示例或完整的 文档 。如果你有兴趣贡献 在项目中,请查看github 回购

快速启动

首次运行pip install tavern

然后,让我们创建一个基本测试, test_minimal.tavern.yaml

---# Every test file has one or more tests...test_name:Get some fake data from the JSON placeholder API# ...and each test has one or more stages (e.g. an HTTP request)stages:-name:Make sure we have the right ID# Define the request to be made...request:url:https://jsonplaceholder.typicode.com/posts/1method:GET# ...and the expected response code and bodyresponse:status_code:200body:id:1

此文件可以有任何名称,但如果要将pytest与 酒馆,它只接收名为 test*.tavern.yaml的文件

然后可以这样运行:

$ pip install tavern[pytest]
$ py.test test_minimal.tavern.yaml  -v
===================================test session starts===================================
platform linux -- Python 3.5.2, pytest-3.4.2, py-1.5.2, pluggy-0.6.0 -- /home/taverntester/.virtualenvs/tavernexample/bin/python3
cachedir: .pytest_cache
rootdir: /home/taverntester/myproject, inifile:
plugins: tavern-0.7.2
collected 1 item

test_minimal.tavern.yaml::Get some fake data from the JSON placeholder API PASSED   [100%]================================1 passed in 0.14 seconds=================================

强烈建议您使用酒馆和pytest-不仅 它有很多实用程序来控制测试的发现和执行, 有大量的插件可以改进你的开发 经验。如果出于某种原因您绝对不能使用pytest,请使用 酒馆ci 命令行界面:

$ pip install tavern
$ tavern-ci --stdout test_minimal.tavern.yaml
2017-11-08 16:17:00,152 [INFO]: (tavern.core:55) Running test : Get some fake data from the JSON placeholder API
2017-11-08 16:17:00,153 [INFO]: (tavern.core:69) Running stage : Make sure we have the right ID
2017-11-08 16:17:00,239 [INFO]: (tavern.core:73) Response: '<Response [200]>'({"userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"})2017-11-08 16:17:00,239 [INFO]: (tavern.printer:9) PASSED: Make sure we have the right ID [200]

为什么不邮递员,失眠或发热等?

酒馆是一个专注的工具,它能很好地完成一件事:自动化测试 API. < /P>

邮递员 失眠症 是覆盖范围广泛的优秀工具 restfulapi的一系列用例,实际上我们在 邮递员。然而,特别是在自动化测试方面,酒馆 比邮递员有几个优点:功能齐全的蟒蛇 编写易于重用的自定义验证函数的环境- 与restfulapi一起测试基于mqtt的系统。-无缝 与pytest集成,将所有测试放在一个地方—更简单, 更加简洁明了的测试语言

酒馆邮递员和失眠症患者做的事情不多。为了 例如,酒馆没有gui,也不进行api监控或 模拟服务器。另一方面,tavern是免费的、开源的 开发人员自动化测试的更强大工具。

pyresttest 是一个类似于tavern的测试restfulapi的工具,但是 不再积极发展。在mqtt测试之上,tavern有 与PyrestTest相比的其他几个优点是 更好的开发人员体验:

  • 更清晰的测试语法,更直观,尤其是 非开发商
  • 验证功能更灵活,更易于使用
  • 更好地解释考试失败的原因

黑酒馆

如果你想给酒馆增加一个特色或者只是随便玩玩 在本地,首先创建本地开发项目是个好计划 环境( 页有 很好的使用python开发环境的入门知识。 在您创建了开发环境之后, pip安装tox 并运行 tox 以运行单元测试。如果你想要 要运行集成测试,请确保 安装并运行docker tox -c tox integration.ini (记住这可能需要一段时间。) 就这么简单!

如果你想在酒馆里开发东西,请输入virtualenv并运行 pip install -r requirements.txt 要安装库,任何要求, 以及其他有用的开发选项。

酒馆使用[黑]( https://github.com/ambv/black )保存所有代码 格式一致。有一个预提交钩子可以运行black 通过运行预提交来启用

如果您想添加一个功能以合并回主线酒馆:

  • 添加所需功能
  • < DL>
    为您的功能添加一些测试:
    > UL>
  • 如果您正在添加一些实用程序功能,例如改进验证 在响应中,添加一些单元测试可能是最好的。这些在 tests/unit/ 文件夹,并使用pytest编写。
  • 如果要添加更高级的功能,如额外验证 函数,或直接依赖于 输入yaml,还可以添加一些集成测试。在 在编写本文时,可以通过在 tests/integration/server.py 和 相同的目录。一旦我们找到合适的 插件系统已实现。
  • 打开拉取请求

    注意tavern暂时支持python 2.7,所以任何代码 你添加的内容必须与之兼容。我们目前使用 未来 要提供的库 向后兼容。

  • 致谢

    Tavern利用了几个优秀的开源项目:

    维护

    酒馆目前由

    • @迈克尔伯尔顿
    • @本豪斯

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

    推荐PyPI第三方库


    热门话题
    java获取textview的文本并将其粘贴到另一个上   java ImageIO。write()不保存文件   java H2数据库排序字符串时间戳,格式为yyyyMMdd'T'hh:mm:ss。SSSSSSS'Z'   java匿名类与静态字段   java将一个句子拆分为字符串数组,并保留特殊字符或空格   JavaBIRT报告引擎。计算Javascript表达式时出错   日志表的java MySQL隔离级别读取未提交   java Android调用意图权限   java如何在iText 7中查找文本位置和边界   从Groovy调用Java类主方法时,避免参数数量不正确   java libGDX:在批处理调用stage constructor时,为舞台上的演员绘制纹理作为背景   java randoop可以利用usermade JUnit测试生成测试吗?   java Eclipse工作区将不再显示我的项目