面試經常被問到的 - 介面依賴怎麼處理
介面依賴
面試的時候經常會被問到在介面自動化測試過程中怎麼處理介面依賴?
首先我們要搞清楚什麼是介面依賴。
1. 什麼是介面依賴
介面依賴指的是,在介面測試的過程中一個介面的測試經常需要依賴另一個或多個介面成功請求後的返回資料。
那怎麼處理呢?不同場景的處理方式有所不同。
2. 介面依賴的多種場景
2.1 單介面測試
在單介面測試時介面依賴有兩種場景。
-
在整個介面用例測試前的依賴
例如:需要登入後的介面,需要在測試前先訪問登入介面獲取對應的鑑權憑證,例如 token。
-
在介面的每一個用例測試前的依賴
例如:專案稽核介面,需要在每次測試前都建立一個專案
2.2 業務流測試
多介面測試業務流時,下一個介面依賴上一個介面的執行結果。
3. 解決方案
不同場景下的解決方案不同。我們在做介面自動化時不管是 python 語言還是 Java 語言,都會使用單元測試框架。這裡我們主要以 python 的 unittest
框架為主,不同框架只是實現方式有所不同,但是思想架構都大同小異。
不管是那種場景的介面依賴都可以通過單元測試框架的前置條件/腳手架程式碼進行處理,不同的是如何傳遞依賴的資料。幾乎是所有的單元測試框架中用例都被設計成隔離的,也即是用例物件和用例物件間是隔離的,獨立的。所以傳遞依賴資料需要一個第三方容器。一般有兩種方案:
- 定義一個全域性變數來共享
- 通過當前測試用例類的類屬性共享
3.1 單介面測試場景 1 解決方案
在整個介面用例測試前的依賴,我們放在 unittest
框架的類級前置方法 setUpClass
中進行處理。資料傳遞通過全域性變數和類屬性進行共享都可以,程式碼示例如下:
推薦使用類屬性進行傳遞。
3.2 單介面測試場景 2 解決方案
在介面的每一個用例測試前的依賴,放到 unittest
框架的方法級前置方法 setUp
中進行處理。資料可以通過全域性變數,類屬性,物件屬性進行傳遞,推薦使用物件屬性。程式碼示例如下:
3.3 業務流測試場景解決方案
業務流測試時,需要將前一個用例的結果傳遞給後面的用例。因為用例間是隔離的,所以可以通過全域性變數和類屬性進行傳遞。程式碼示例
4. 總結
瞭解了上面的類容,我們來總結一下,介面自動化時怎麼處理介面依賴
這個問題的回答如下:
對於單介面測試如果依賴介面只需要在測試開始執行一次,那麼可以將依賴介面的請求放在類級前置方法中,然後通過全域性變數或者當前用例類屬性來傳遞依賴資料。
對於單介面測試如果依賴介面需要在每個用例前執行,那麼可以將依賴介面的請求放在方法級前置方法中,然後通過用例物件屬性來傳遞依賴資料
對於多介面的業務流測試,可以將下一個介面需要依賴的資料通過當前用例類屬性來傳遞依賴資料。
軟體測試面試寶典+初、中級學習資料