栈桥:用于休息的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
--------
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