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' } } } }
下面是此框架用到的一些技術:
- RestAssured
- TestNG
- AllureReport
- Groovy(MOP)
- Gradle
專案結構:
最終的測試報告示例:
程式碼位置 : https://github.com/ZackZhou/zrest
構建方法如下:
clone 到本地後,命令列執行
- ./gradlew User
- ./gradlew allureReport
- ./gradlew allureServe
後期詳細介紹實現方式。