基於RestAssured實現介面自動化

RestAssured是一款強大的介面自動化框架, 旨在使用方便的DSL,簡化的介面自動化。 

下面是基於RestAssured擴展的一個簡單框架示例, 先看看用例的風格:

package testcases

import models.Create_Post
import models.Info_Post
import models.List_Get
import org.testng.annotations.Test
import settings.Givens
import settings.RetryStrategy
import test.TestBase

class TestCase extends TestBase {
    @Delegate
    Givens givens = new Givens() // 可以放到新建的測試基類中

    @Test(description = '創建並獲取用戶', retryAnalyzer = RetryStrategy)
    void testcase_01() {
        use(categories) {
            given_host() // 此處只有一個host,如果有多個host 交互,可以在Givens中新建另一個host, 如 given_host_a()
                .use(Create_Post) { it.name = 'Zack' } //修改請求體裡面的值
                .when().call('創建用戶,並校驗介面結果')
                .then().assertThat()
                .statusCode(200)
                .body { assert it.status == 'Awesome!' }
                .extract().store('id', this) { it.id } // 將id 存起來

            given_host()
                .use(List_Get)
                .when().call('獲取所有用戶')
                .then().assertThat()
                .statusCode(200)
                .body {
                    assert it.data.id.contains(get_store('id')) //驗證新建的id存在
                    assert it.data.name.contains('Zack') //驗證第一步的用戶名存在
                }

            given_host()
                .use(Info_Post)
                .queryParams("id": get_store('id')) //獲取ID對應用戶的詳細資訊
                .when().call('獲取所有用戶')
                .then().assertThat()
                .statusCode(200)
                .body { assert it.info == 'my name is Zack' }
        }
    }
}

 

下面是此框架用到的一些技術:

  1. RestAssured
  2. TestNG
  3. AllureReport
  4. Groovy(MOP)
  5. Gradle

項目結構:

 

 

 

最終的測試報告示例:

 

 

 

程式碼位置 :  //github.com/ZackZhou/zrest

構建方法如下:

clone 到本地後,命令行運行

  1. ./gradlew User
  2. ./gradlew allureReport
  3. ./gradlew allureServe

 

後期詳細介紹實現方式。