我有一些SOAP请求,我想要一个Fitnesse页面来执行该请求并验证是否收到响应(只需检查它是否为200 OK或检查返回的SOAP响应)。简而言之,我使用它来重播一系列SOAP请求并验证它们是否有效,就像部署后的冒烟测试一样。

似乎这应该是内置的东西,发送一个http请求并检查响应代码或主体的批量比较。我不需要深入研究XML响应本身。这是我可以实际编写的脚本(bash / curl),但是我宁愿使用Fitnesse,因为我们将其用于其他内容。

我正在使用Java版本的Fitnesse,而不是C#(FitSharp)版本。

我四处寻找并没有成功,但我希望我能以某种方式在Fitnesse本身或普通的第三方聚会罐中错过它,我可以加入以支持这一点。

最佳答案

我推荐RestFixture。尽管它的名称很简单,但它是一个非常简单的HTTP客户端-您可以编写任何HTTP请求,然后检查返回的响应:状态代码,标头(使用正则表达式仅检查您感兴趣的标头)和正文(使用XPath或JavaScript期望仅检查您感兴趣的节点)。根据Content-Type标头的值处理XML或JSON。处理几乎所有的HTTP动词:GET,POST,PUT,DELETE,HEAD,OPTIONS,TRACE。不要以为它可以处理PATCH。

我刚刚开始使用Fried Hoeben的HttpTest固定装置,XmlHttpTest和JsonHttpTest(请参阅此线程其他地方的Fried回答)。它们似乎比RestFixture具有更多的功能。例如,它们支持模板,使您可以发送重复的请求,这些请求与嵌入在正文中的某些值相同。您只需指定一次模板,然后只列出每次调用传递给它的值,而不必每次都重复指定整个请求主体。

另一方面,对于简单的Web服务调用,我认为RestFixture更易于使用。

RestFixture概述

RestFixture很容易记住,因为它实际上只有三种类型的命令:

1)设置:setHeader和setBody。用于指定标头或HTTP请求的正文;

2)let:为变量赋值;

3)HTTP动词:发送HTTP请求。

这就是为什么我喜欢RestFixture-所有HTTP动词的语法都相同的原因:

| verb | uri | ?responseStatusCode | ?responseHeaders | ?responseBody |

您可以指定HTTP谓词,将请求发送到的URI,所需的响应状态代码,要检查的响应标头(省去所有不需要测试的标头;可以使用正则表达式)和节点在响应正文中进行检查。

我认为,对每个HTTP动词使用相同的语法可以进行非常干净的测试。



| Import |
| smartrics.rest.fitnesse.fixture |

|Table: Rest Fixture | http://localhost:9876 |
| setBody | <resource><name>a name</name><data>data</data></resource> |
| POST | /resources/ | 201    |                          | no-body    |
| let  | id          | header | Location:/resources/(.+) |            |

| Table: Rest Fixture | http://localhost:9876 |
| GET | /resources/%id% | 200 | Content-Type : application/xml | !- /resource/name[text()='a name']
                                                                    /resource/data[text()='data'] -! |


此测试通过POST生成新项目,读回新项目的ID并将其分配给变量,然后将该ID值与GET一起使用以验证新项目是否存在并包含正确的数据。

POST请求期望响应的状态代码为201,没有正文。 GET请求期望响应具有200状态代码和设置为application / xml的Content-Type标头。它期望主体将名称节点设置为“名称”,将数据节点设置为“数据”。

这个例子是针对RESTful Web服务的,但是RestFixture对于SOAP同样适用。您为POST指定的主体将更大。

安装及使用

可以在http://github.com/smartrics/RestFixture中找到RestFixture。它包括带有大量示例的文档链接。

以下是使用Maven构建和安装RestFixture的说明:workflow of creating tests using RestFixture

来自.NET背景,没有任何Maven经验,但是,我发现安装它的最简单方法是将其添加到现有的FitNesse安装中:

1)从Maven Central的http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22smartrics-RestFixture%22下载压缩的二进制文件

2)将zip文件解压缩到FitrNesseRoot目录旁边的目录中(该目录不应位于FitNesseRoot下)。为了便于说明,我们将目录称为RestFixtureLib(实际上,您可以将目录命名为任意名称);

3)在RestFixtureLib目录中,删除FitNesse- {version} .jar文件,因为我们已经安装了FitNesse;

4)在将包括RestFixture测试的测试页面中,将RestFixtureLib目录添加到类路径:

!path RestFixtureLib/*.jar


(或者您将RestFixture解压缩到的目录的路径是什么)

如果要在多个页面上使用RestFixture,则此类路径定义可以包含在套件页面或根页面中。

5)RestFixture可以与FIT或SLIM测试系统一起使用。如果使用SLIM,请在测试页中包含以下定义:

!define TEST_SYSTEM {slim}


6)如果您在测试页面的顶部导入RestFixture命名空间,则使测试的过程不再那么费劲:

| Import |
| smartrics.rest.fitnesse.fixture |


然后,您可以使用定义测试

|Table: Rest Fixture | ... |
| ...                      |

10-04 22:43