2014-02-15 146 views
9

我发现了很多与此相关的类似问题,但没有找到具体的答案。其实我的要求有点不同。所以张贴这个。Automate Rest API测试并将其与持续集成(CI-Jenkins)相集成

我想让Rest API自动化,并且我得到了两个相同的选项。 第一个是Rest Assured,第二个是Play框架。

对于例如。测试这个RESTAPI,

http://servername:9000/dbs/all/list/m1/p1/sch1 

(这使XML响应) 我已经用Java编写的代码放心,并且工作正常。我将它与Maven项目集成,以便可以与Jenkins集成。 示例代码:

import com.jayway.restassured 
    public class TestNGSimpleTest2 { 

     @Test 
     public void testApi() { 
       expect(). 
       statusCode(200). 
       body("Status", equalTo("Su22ccess")). 
       when(). 
       get("http://localhost:9000/dbs/all/list/m1/p1/sch1"); 

     } 

所以我的第一个问题是:1。 是放心的就是用最好的工具? 2. Play框架是否更好? 3.我发现许多其他工具如Jmeter,RightAPI等来测试RestAPI。但我不认为这是可以设置的。我对吗?

+0

什么让你认为自动化测试框架创建测试将不会是“自动化”?您的问题对我来说看起来很奇怪...... –

+0

如果您在配置“繁重”框架时遇到困难,您可以使用更轻的框架,如[Frisby.js](http://frisbyjs.com)。 –

回答

2

您发布的RestAssured代码对基本案例来说工作得很好。这并不一定是“合适的工具”,如果你想:

  • 不断补充新的测试用例,并没有太多的资源
  • 传播完成报警与合式的错误信息(尤其是像松弛或GitHub的地方)
  • 减少误报
  • 重复使用相同的测试为监测

建立这些特性需要时间和资源,这,DEP结束于你的团队的规模可能会或可能不是一个好的电话。

您发布的一些商业解决方案可以为您解决其中的一些问题。

Assertible是支持直接描述的工作流程中的无代码溶液:https://assertible.com/blog/automated-api-testing-with-jenkins

1

自动化REST API测试,作为一个起点,我建议使用Postmannewman

邮差为构建请求提供了一个很好的用户界面,纽曼是它的命令行对应。在Postman UI中创建一组请求和相应的测试后,您可以通过newman从Jenkins运行整个集合,如果测试失败则阻止部署。

1

您可以使用zerocode库进行REST api测试自动化。方便的工具自动化测试仪以及开发人员。请参阅latest release。只需复制粘贴JSON断言。没有串行器/解串器需要 - 见HelloWorldTest

<dependency> 
    <groupId>org.jsmart</groupId> 
    <artifactId>zerocode-rest-bdd</artifactId> 
    <version>1.1.19</version> <!-- See the latest version in mvn central --> 
</dependency> 
  • GitHub的链接:https://authorjapps.github.io/zerocode/ 并与启动和HelloWorld的
  • 百科:https://github.com/authorjapps/zerocode/wiki

  • 需要端部以外没有其他代码JSON中的点细节

  • 在测试失败的情况下,它列出了个所有字段那些不符合预期
  • 您可以为单元测试使用@RunWith(ZeroCodeUnitRunner.class)
  • 或者@RunWith(ZeroCodePackageRunner.class)运行套房
  • 运行它例如产生很好的互动报告Spike chatTabular report与时间戳
  • 请求响应人类可读和容易弄清楚的断言失败
+0

空手道 - https://github.com/intuit/karate是一个更好的选择,使用更广泛。这个“zerocode”库在GitHub上只有一颗星。 –

+0

空手道看起来不错。对于给定/当/时风格的方法,黄瓜是更好的选择,并拥有更多的明星。我们在我们的项目中使用了它与小黄瓜。这些方法仍然冗长繁琐,随着时间的推移,浏览和维护代码变得有点困难;后来我们更喜欢zerocode。 查看[黄瓜GitHub](https://github.com/cucumber/cucumber), 查看[cucumber BDD blog](https://cucumber.io/blog/2017/05/15/intro-to- bdd-and-tdd), 参见[cucumber-jvm](https://github.com/cucumber/cucumber-jvm) –

+0

让我们同意不同意,我建议你仔细看看Karate,在我看来你一点都不了解它。它不* BDD,它*不*冗长和繁琐。为了可能会遇到这些评论的其他人的利益 - 这里有更多的细节:https://stackoverflow.com/a/47799207/143475 –