我有一些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 | ... |
| ... |