介面初心者心得第二版

好吧,持續做了幾天,我繼續來做分享了,也希望各位前輩多多指教。我表示我還不是很懂。

目前使用的testng和rest-assured。這幾天增加了DataProvider和rest-assured的方法。

testng這裡是支持新建數據驅動的xml,比如:

<?xml version="1.0" encoding="UTF-8"?>n<data>n <testmethod1>n <abc>123</abc>n <def>456</def>n </testmethod1>n

接著可以通過在類中定義DataProvider來實現xml的解析實現,假設dataprovider對應的方法在A類。

@DataProvidern public static Object[][] providerMethod(Method method) {n...n}n

在接下來的要使用到數據的時候就可以直接去添加dataprovider對應的的標籤,同時testng會根據test method的方法名去找xml中對應的數據,如:

@Test(dataProvider = "providerMethod", dataProviderClass = A.class)n public void testmethod1(Map<?, ?> param) throws InterruptedException {n...nn }n

這樣就可以直接一對多的進行數據驅動了。

這裡我有個問題,一般非testng.xml的準備數據的xml裡面,很多數據都是不同類型的,但現在我這邊讀取出來都是String,這個數據類型的設置在xml裡面能夠直接設置么?或者還有什麼好的方式?歡迎大家來告訴我哈

接著再來看下rest-assured吧,Google了相關信息,相比其它框架少了不少。我就用下來的情況說下心得吧。rest-assured也是結合了BDD風格的一個框架。通過given,when,then的結合更方便的進行了API的驗證。雖然我個人還是不是很習慣這個語法。我們來看幾個例子。

比如這樣的Json:

{n"lotto":{n "lottoId":5,n "winning-numbers":[2,45,34,23,7,5,3],n "winners":[{n "winnerId":23,n "numbers":[2,45,34,23,3,5]n },{n "winnerId":54,n "numbers":[52,3,12,11,18,22]n }]n}n}n

那麼我們的驗證就可以這樣寫:

expect().n body("lotto.lottoId", equalTo(5)).n body("lotto.winners.winnderId", hasItems(23, 54)).nwhen().n get("/lotto");n

當然我們其實在使用mvn跑的時候我們希望能夠看到更多的req,res的日誌的話我們可以這樣增加,這就是rest-assured style了。

expect().n log().all().n body("lotto.lottoId", equalTo(5)).n body("lotto.winners.winnderId", hasItems(23, 54)).nwhen().n get("/lotto");n

我們也可以看一個比較複雜點的語句吧。

given().log().all().contentType("application/json")n .header("cookie",n "abcdefghijkl")n .request().body(jsonbody).expect().statusCode(200).body("result", equalTo(true)).when()n .post("/xxxxx");n

所以其實一條語句中將請求,返回,斷言,包括url_param等都包括在內了。看個人喜好了。不過從rest assured框架的支持上來講,斷言支持的類型很多,有興趣的也可以試試看。我目前先按照這個架構往下嘗試了,大家可以繼續等我的心得。

推薦閱讀:

統一回答最近被問的最多的幾個問題
Python+selenium自動化測試入門 環境搭建
測試用例設計的方法下
測試計劃及編寫
做 iOS 安全測試之前你應該知道的工具 (一)

TAG:APP测试 | android自动化测试 | 软件测试 |