2014-02-15 142 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 –