如何为Python / Tavern验证YAML

时间:2019-05-31 19:06:13

标签: yaml 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 /什么可以使错误消息更有用吗?

我发现Tavern examplescookbook使我对语法有了一些了解,但是编写自己的YAML既失败又失败,而不是失败。

编辑:根据pykwalify docs,我可以在CLI中运行pykwalify,例如:

pykwalify -d data.yaml -s schema.yaml

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

2 个答案:

答案 0 :(得分:0)

自我答案:

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

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

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

答案 1 :(得分:0)

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

Tavern可以用于一次性测试,例如不同的错误情况,但是除非您对非程序员有硬性要求,至少要阅读API测试,否则使用真正的Python会更快乐。 Tavern几乎没有代码重用,因此很难重构代码,存在很多复制粘贴和小的调整(没有带参数的过程调用),并且调试代码绝非易事。

带有pytest和--pdb的

请求库(错误时转至python调试器)使难以置信的生产环境可以编写回归测试:您无需阅读文档,而是询问代码值是什么,添加断言,重新运行测试。与Tavern相比,使用请求,您可以用10%的行将API测试速度提高10倍。