python 自動化測試框架概述

怎麼樣的框架?

數據驅動(數據與代碼分離)

如何做到數據和代碼的分離?

基礎數據:環境數據、數據庫信息、配置信息 都放在配置文件裏;

場景數據:測試用例都放在excel管理;

一個接口對應一個.PY文件

測試用例包括了幾列?解釋

每一行對應一條測試用例

title: 用例的描述,說明測試點

後面的幾列是api接口測試必備的幾個條件:url、測試數據、請求方式、期望結果、實際結果, 相當於功能測試

好處:減少了代碼的冗餘,同樣的接口只是不同數據的驅動;

舉例:比如測試登錄接口,不需要寫n個登錄的代碼來測試登錄接口,只需要1個登錄的測試方法,傳入不同的測試數據來實現不同場景的登錄覆蓋;

實現方式:通過excel的管理測試用例,unittest和ddt框架的結合,實現了測試數據的驅動;

數據驅動的好處?

1 減少代碼的冗餘

2 可維護性更強

測試代碼和測試數據是分開的,測試數據更改,不需要更改代碼;

整個框架的結構分層

數據層、用例層、邏輯層

數據層:最基礎的服務,數據維護在excel裏面,讀取方法 do_excel openpyxl

json(json.load讀取文件 json.loads讀取字符串)

yaml的讀取

用例層:

1個模塊1個sheet用例
通過ddt-data裝飾器,完成測試數據傳遞到測試方法;


邏輯層:

邏輯層:每一個用例都有前置和後置條件,在測試之前的測試準備
unittest框架:setUp teardown 每個用例都執行& setUpClass teardown每個測試類執行一次;

參數化數據:封裝放在common文件
eg:request請求(get、post)
登錄操作需要的cookies、token
執行前後和數據庫的交互:mysql操作、文件的路徑都是參數化完成

用例層是調用不同的工具類,完成不同的邏輯,最後再加上斷言,不需要每個用例都做邏輯判斷

設計框架的好處?

1. 手工測試用例與自動用例完美結合,避免重複工作
2. 配置靈活,根據需要快速切換測試環境  conf
3. 常用功能封裝,邏輯清晰,易於維護  common
4. 統一執行入口,管理測試用例集  執行runtest.py 執行一個文件就可以了
5. 持續集成,定時構建,快速反饋  jenkins

使用到的技術/框架

1. 語言 Python
弱語法,不需要編譯,面向對象

2. 測試框架 unittest(單元測試框架) ---pytest
用xml直接換成xml類? 替換一個do_xml類就可以
unittest分層:testcase,testsuite,testload,testrun,mock
原理: 整個流程就是首先要寫好TestCase,然後由TestLoader加載TestCase到TestSuite,然後由TextTestRunner來運行TestSuite,運行的結果保存在TextTestResult中,整個過程集成在unittest.main模塊中。
    
3. 接口調用 request ---是最簡潔的,底層就是urlib2,唯一一個非轉基因http庫urlib 也可以完成http請求

4. 數據驅動 ddt
ddt類裝飾器 data數據裝飾器

5. 數據管理 openpyxl
openpyxl可以完成讀寫
pymysql 因爲用的數據庫是mysql
xpwl 只能完成讀
xlrd 只能完成寫

6. 數據庫交互 pymysql 
---根據數據庫選擇對應的第三方模塊來完成因爲項目用的是mysql,根據數據庫選擇相應的第三方模塊

7. 數據格式的轉換 
json 用雙引號
數據格式轉化:json/eval
區別:json針對json格式字符串,eval針對python數據的
eval 不能識別非python數據
json是跨語言的

8. 日誌處理 logging --- 清晰的執行過程,快速定位問題
日誌級別在配置裏面,可以根據需要配置,可以在控制檯,進行變執行變輸出

9. 持續集成 jenkins
持續集成的好處:可視化 快速構建 部署 定時 自動執行
避免人工操作出錯
快速部署
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章