python 自動化測試框架概述

2021-09-26 18:48:45 字數 2440 閱讀 9576

怎麼樣的框架?

資料驅動(資料與**分離)

如何做到資料和**的分離?

基礎資料:環境資料、資料庫資訊、配置資訊 都放在配置檔案裡;

場景資料:測試用例都放在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

持續整合的好處:視覺化 快速構建 部署 定時 自動執行

避免人工操作出錯

快速部署

自動化測試框架

可設計為五層 一 測試用例層 主要存放用例的指令碼,分為主指令碼和子指令碼。主指令碼用來控制各個子指令碼,實現指令碼間的資料傳遞。子指令碼是實現各個功能點的指令碼,同時也會提取出一些共用的方法,一般放在提取層中。主指令碼中可使用資料驅動來控制指令碼實現各種場景的流程,如silktest的test s...

python自動化測試框架nose

python除了unittest,還有一款更快捷的nose,nose可以說是對unittest的一種簡化吧 但是他不需要unittest那種必須有固有的格式,他只需要檔案,類名,方法名等含有test就可以 unittest是需要手動來寫discover函式來遍歷用例的 官網位址 舉例說明,比如我有乙...

python自動化測試框架選擇

框架 framework 是整個或部分系統的可重用設計,框架是用來解決 的組織及執行控制問題的。在我們編寫自動化指令碼的時候,經常需要讀取配置檔案,讀取資料檔案,傳送請求,記錄日誌,連線並對比資料庫資料。每個指令碼裡都重寫一遍各種方法不僅工作量大而且易錯。所以我們需要把公共的方法提取出來,封裝成單獨...