怎麼樣的框架?
數據驅動(數據與代碼分離)
如何做到數據和代碼的分離?
基礎數據:環境數據、數據庫信息、配置信息 都放在配置文件裏;
場景數據:測試用例都放在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
持續集成的好處:可視化 快速構建 部署 定時 自動執行
避免人工操作出錯
快速部署