我是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 examples和cookbook使我对语法有了一些了解,但是编写自己的YAML既失败又失败,而不是失败。
编辑:根据pykwalify docs,我可以在CLI中运行pykwalify,例如:
pykwalify -d data.yaml -s schema.yaml
但是小酒馆的YAML模式在哪里?
答案 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倍。