基於RestAssured實現介面自動化

ZackZhou發表於2021-05-15

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

專案結構:

 

 

 

最終的測試報告示例:

 

 

 

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

構建方法如下:

clone 到本地後,命令列執行

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

 

後期詳細介紹實現方式。 

相關文章