栈桥:用于休息的doctest(ful服务)

trestle的Python项目详细描述


trestle:doctest for rest(ful services)
--------



about
~about



trestle是一个nose插件,允许您为
web应用程序(或shell命令,但稍后将详细介绍)编写可测试文档。

用一组特殊指令来表示用于测试的**fixture**(包括http或模拟http客户端),通过
客户端发送的每个**请求**,以及被测应用程序的**预期响应**的CTured文本`(类似于这个文档)。


例如,栈桥测试文档可能如下所示::


frog是一个处理青蛙的web服务。


您可以列出可用的青蛙。

…请求:列出可用的青蛙


获取/青蛙



响应采用纯文本格式。

…回答:

牛蛙
毒镖
三折射




请求:获取牛蛙的详细信息

回答:


牛蛙是真正的大青蛙。
……


否则,返回404回答。

……请求:获取非青蛙的详细信息。回答:

404…



"蟾蜍"不是青蛙。



请求:创建一个青蛙

post/frogs/pouched+frog
响应::

201创建







fixtures::关于

每个要测试的文档都需要fixtures指令。
指令必须命名python模块。模块必须包含
以下属性:

client
要用methods.get()、.post()、
.put()等方法调用的客户端应用程序。每个方法必须至少接受参数url和
数据,并且可以接受其他方法,但可能不需要它们。` paste.fixtures.testapp``是这样一个客户机,尽管它本身只支持.get()和.post()。


,并且可能包含以下函数:


setup_all(cls)
setup fixture在第一个请求之前运行。

teardown_all(cls)
teardown fixture在最后一个请求之后运行uest.

每个安装(inst)
每个请求之前运行安装夹具。


每个拆卸夹具(inst)
每个请求之后运行拆卸夹具。

请求``指令,后跟
一个或多个``..响应``指令。''.request``指令使用fixtures模块中定义的客户端定义要发送到被测web应用的请求。


请求:一个简单的get




请求:post

post/foo/bar
a=1&b=2



回答:小马!1!
……



…注意:在一行中用`..``结束每个块,以避免可能导致块后面的文本被丢弃的rst解析错误。

ng过程很简单:使用fixtures模块中定义的
客户机执行每个请求,并将文本中该请求后面的每个预期响应
与实际的
响应进行比较。如果所有响应都匹配,则测试通过。否则,它将失败。raw::html

<;p>;给出了一个<;span class="pass">;令人愉快的绿色
背景<;/span>;,失败一个<;span class="fail">;险恶的红色<;/span>;。
失败匹配的详细信息包含在
失败示例之后。<;/p>;



fixture命令
^^^^^^^^^^^^^^^^^^^

虽然通常最好使测试只依赖于公共api
,而不是内部细节或外部性,但有时(例如,当测试
依赖时间的操作时)是不可能或不合理的。对于那些时候,
对请求使用**:setup:**参数。在运行
请求之前,exec参数
的主体将在fixture模块的上下文中求值。当然,还有一个**:teardown:**参数,它将在运行请求并处理响应之后执行。下面是一个
示例::

…请求::获取特殊的东西
:setup:client.set廑special(true)
:teardown:client.set廑special(false)


get/special




shell示例
^^^^^^^^^^^^^^^^^^^^^

trestle也支持shell示例。执行shell示例时,将执行给定的
shell命令,并且该命令生成的stdout与使用普通doctest
输出检查器的`..shell``示例的主体相比
。一个简单的shell示例如下:shell::echo"hello"

..

shell示例支持标准的``:setup:``和`:teardown``选项,如
以及其他三个选项:``:cwd:```,它们可用于设置shell
命令的cwd;`:post:```,它命名了一个可用于后处理的fixture callss
在将shell命令的输出与预期的
输出和标志`:stderr:``进行比较之前,将其与shell命令的stderr输出进行比较,而不是与stdout(默认值)进行比较。

_`重组文本`:http://docutils.sourceforge.net/rst.html
…_` paste.fixtures.testapp`:http://pythonpaste.org/testing-applications.html

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

推荐PyPI第三方库


热门话题
从文本文件中读取时显示java符号“ï»”   java在有很多生产商的情况下如何改进Disruptor?   不同线程的java不同堆栈   用Java模拟oraclespool   jsp java访问自定义web中的错误信息。xml错误页   给出奇怪结果的java集成堆栈   java在jsp中显示值列表   java会话。保存更新具有错误ID的实体   在树数据结构中添加节点时的java递归   java在Spring Data Mongodb中使用$$ROOT检索整个文档   java我应该把图像放在罐子里还是不放在罐子里?(Inno设置)   java将bat文件放入jar文件中   Java:如何在节点上执行XPath查询   控制台应用程序如何在Mac上从Java输出重音字符?