BadSchemaError: How to validate YAML schema for Python/Tavern
BadSchemaError: How to validate YAML schema for Python/Tavern
我是 Python 程序员,所以我想使用 Tavern 进行 API 测试。
表示用YAML编写程序(API测试)
问题是,当我编辑 YAML 输入时,它经常因错误 BadSchemaError 而中断。 Tavern 嵌入了 pykwalify,但错误消息不是很有用。
我经常收到这样的错误信息:
=================================================== test session starts ===================================================
platform linux2 -- Python 2.7.5, pytest-4.5.0, py-1.8.0, pluggy-0.12.0
rootdir: /home/*****/tavern
plugins: tavern-0.26.3
collected 0 items / 1 errors
========================================================= ERRORS ==========================================================
_________________________________________ ERROR collecting test_echo.tavern.yaml __________________________________________
/usr/lib/python2.7/site-packages/tavern/testutils/pytesthook/file.py:306: in collect
raise_from(exceptions.BadSchemaError, e)
/usr/lib/python2.7/site-packages/future/utils/__init__.py:456: in raise_from
raise e
E BadSchemaError
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
================================================= 1 error in 0.13 seconds ======
是否有更好的方法来验证 Tavern YAML 语法? pykwalify/tavern/whatever 的某些参数是否可以使错误消息更有用?
我发现 Tavern examples and cookbook 让我对语法有了一些了解,但是编写自己的 YAML 是碰碰运气,碰碰运气比碰碰运气要多。
编辑:根据 pykwalify docs,我可以在 CLI 中 运行 pykwalify,例如:
pykwalify -d data.yaml -s schema.yaml
但是小酒馆的 YAML 架构在哪里?
自己回答:
是的,YAML 对空格非常挑剔。每个缩进正好 2 个空格。我的 vim 做了 4 个空格。
一旦您的基本 YAML 模式有效,错误消息就会更有帮助。
从最简单的示例开始,运行 经常测试(每更改几行)。
另一个自我回答,几个月后:Just use pytest and requests library - 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 倍的测试。
我是 Python 程序员,所以我想使用 Tavern 进行 API 测试。
表示用YAML编写程序(API测试)
问题是,当我编辑 YAML 输入时,它经常因错误 BadSchemaError 而中断。 Tavern 嵌入了 pykwalify,但错误消息不是很有用。
我经常收到这样的错误信息:
=================================================== test session starts =================================================== platform linux2 -- Python 2.7.5, pytest-4.5.0, py-1.8.0, pluggy-0.12.0 rootdir: /home/*****/tavern plugins: tavern-0.26.3 collected 0 items / 1 errors ========================================================= ERRORS ========================================================== _________________________________________ ERROR collecting test_echo.tavern.yaml __________________________________________ /usr/lib/python2.7/site-packages/tavern/testutils/pytesthook/file.py:306: in collect raise_from(exceptions.BadSchemaError, e) /usr/lib/python2.7/site-packages/future/utils/__init__.py:456: in raise_from raise e E BadSchemaError !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ================================================= 1 error in 0.13 seconds ======
是否有更好的方法来验证 Tavern YAML 语法? pykwalify/tavern/whatever 的某些参数是否可以使错误消息更有用?
我发现 Tavern examples and cookbook 让我对语法有了一些了解,但是编写自己的 YAML 是碰碰运气,碰碰运气比碰碰运气要多。
编辑:根据 pykwalify docs,我可以在 CLI 中 运行 pykwalify,例如:
pykwalify -d data.yaml -s schema.yaml
但是小酒馆的 YAML 架构在哪里?
自己回答:
是的,YAML 对空格非常挑剔。每个缩进正好 2 个空格。我的 vim 做了 4 个空格。
一旦您的基本 YAML 模式有效,错误消息就会更有帮助。
从最简单的示例开始,运行 经常测试(每更改几行)。
另一个自我回答,几个月后:Just use pytest and requests library - 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 倍的测试。