【问题标题】:BadSchemaError: How to validate YAML schema for Python/TavernBadSchemaError:如何验证 Python/Tavern 的 YAML 模式
【发布时间】:2019-10-17 10:11:41
【问题描述】:

我是 Python 程序员,所以我想使用Tavern 进行 API 测试。

意思是用 YAML 编写程序(API 测试)。

问题是,当我编辑 YAML 输入时,它经常因错误 BadSchemaError 而中断。 Tavern 已经嵌入了 pykwalify,但是错误信息不是很有帮助。

我经常收到这样的错误消息:

================================================ ==== 测试开始 ============================================ ========
平台 linux2 -- Python 2.7.5、pytest-4.5.0、py-1.8.0、pluggy-0.12.0
根目录:/home/*****/tavern
插件:酒馆-0.26.3
收集到 0 个项目 / 1 个错误

==================================================== ======= 错误 =========================================== =================
_________________________________________ 收集 test_echo.tavern.yaml 时出错 __________________________________________
/usr/lib/python2.7/site-packages/tavern/testutils/pytesthook/file.py:306:收集
    raise_from(exceptions.BadSchemaError, e)
/usr/lib/python2.7/site-packages/future/utils/__init__.py:456:在 raise_from
    提高e
E BadSchemaError
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!中断:收集过程中出现1个错误!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
================================================== 1 0.13 秒内出错 ======

有没有更好的方法来验证 Tavern YAML 语法? pykwalify/tavern/whatever 的一些参数可以使错误消息更有帮助吗?

我找到了 Tavern examplescookbook,这让我对语法有了一些了解,但是编写我自己的 YAML 是偶然的,而且失败比成功更多。

编辑:根据pykwalify docs,我可以像这样在 CLI 中运行 pykwalify:

pykwalify -d data.yaml -s schema.yaml

但是酒馆的 YAML 模式在哪里?

【问题讨论】:

    标签: yaml tavern


    【解决方案1】:

    自我回答:

    是的,YAML 对空格非常挑剔。每个缩进正好 2 个空格。我的 vim 做了 4 个空格。

    一旦您的基本 YAML 架构有效,错误消息就会更有帮助。

    从最简单的示例开始并经常运行测试(每隔几行更改一次)。

    【讨论】:

      【解决方案2】:

      几个月后的另一个自我回答:只需使用 pytest 和 requests - https://pypi.org/project/requests/2.7.0/

      Tavern 可以进行一次性测试,例如不同的错误条件,但除非您对非程序员有硬性要求,至少要阅读您的 API 测试,否则您会更喜欢真正的 Python。 Tavern 几乎没有代码重用,因此很难重构代码,有很多复制粘贴和少量调整(没有带参数的过程调用),调试代码绝非易事。

      requests library with pytest and --pdb (drop to python debugger on error)使得难以置信的生产环境可以编写回归测试:你不需要阅读文档,而是询问代码值是什么,添加断言,重新运行测试。与 Tavern 相比,使用请求,您可以用 10% 的行数将 API 测试速度提高 10 倍。

      【讨论】:

        猜你喜欢
        • 2011-06-30
        • 2019-08-05
        • 2021-09-06
        • 2018-11-04
        • 2021-09-28
        • 2021-01-03
        • 2013-09-24
        • 2012-11-28
        • 2011-03-16
        相关资源
        最近更新 更多