本文章主要講解Python接口自動化測試框架模型的搭建,主要介紹如何設計框架,以及基礎的框架運行等,除此之外下方有系列文章的傳送門,還在持續更新中,感興趣的小伙伴也可以前往查看,話不多說,讓我們一起看看吧~
系列文章:
系列文章1:【Python自動化測試1】遇見Python之美
系列文章2:【Python自動化測試2】Python安裝配置及PyCharm基本使用
系列文章3:【Python自動化測試3】初識數據類型與基礎語法
系列文章4:【Python自動化測試4】字符串知識總結
系列文章5:【Python自動化測試5】列表與元組知識總結
系列文章6:【Python自動化測試6】字典與集合知識總結
系列文章7:【Python自動化測試7】數據運算符知識合集
系列文章8:【Python自動化測試8】流程控制語句講解
系列文章9:【Python自動化測試9】函數知識合集
系列文章10:【Python自動化測試10】文件基礎操作
系列文章11:【Python自動化測試11】模塊、包與路徑知識合集
系列文章12:【Python自動化測試12】異常處理機制知識合集
系列文章13:【Python自動化測試13】類、對象、屬性與方法知識合集
系列文章14:【Python自動化測試14】Python自動化測試基礎與進階練習題
系列文章15:【Python自動化測試15】unittest測試框架的核心概念與作用
系列文章16:【Python自動化測試16】測試用例數據分離
系列文章17:【Python自動化測試17】openpyxl二次封裝與數據驅動
系列文章18:【Python自動化測試18】配置文件解析與實際應用
系列文章19:【Python自動化測試19】日志系統logging講解
框架搭建前必定是以一個項目的形式存在的,故此我們需要新建一個項目,你可以通過Open
打開原有項目的一個包,以此來獨立成一個項目,也可以直接使用New Project
來創建一個新項目。
在任何一個項目中,我們都可以看到README這個文件,README文件是一個項目的說明文檔,其中會包括基礎的文件說明、框架搭建及維護的作者,框架認知、框架體系、框架結構、框架作用、項目說明、代碼使用規范和注意事項等內容,具體內容通常依據個人或項目需要進行文件說明,文件可以采用md形式,也可以采用txt形式,可以附上一些說明,例如:
通常而言,我們項目中的代碼需要進行版本控制,行業中常見的是svn與git,.gitignore文件用於git版本控制,而.gitignore文件的作用是:將特定的文件移除,不會進入至版本控制系統當中,不會進行上傳。
比如代碼運行所產生的緩存文件,這些緩存文件大多數會放入至__pycache__文件夾中,故此我們可以選擇該文件夾,不納入版本控制系統。還有項目創建所生成的,idea/文件夾,我們也可以不納入版本控制。
在真實項目中需要特別注意,涉及到敏感數據,絕對不要放入至版本控制當中,例如測試賬號、數據庫地址等等,這樣會暴露項目內容,嚴重會追究法律責任,如果你是在看本人文章的讀者且正在使用公司項目實戰,請務必小心!
不納入版本控制的做法很簡單,只需要在.gitignore文件中添加對應的文件夾或文件即可,添加一個後並換行可添加第二個,則代表該文件或文件夾不納入版本控制,後續的具體內容有興趣大家可以繼續了解。
框架在生活中也能夠比較常見,例如建造一座高樓大廈時,我們需要固定好這個大樓的外層結構,確保建造時大樓是筆直的,確保不會晃動,這就是高樓大廈的框架,而房屋的室內室外等均屬於填充內容。
測試框架也是如此,我們需要搭建起一個自動化的測試框架,可重復設計和利用的內容,寫的代碼就是在進行框架填充,代碼中會包括:
""" 工具、組件。-- 專門處理excel的工具、記錄logger日志的工具、生成日志的工具等等 """
框架即意味著規則、規矩,任何人使用框架不能夠違背,框架沒有標准答案,只要你自己是框架的設計者,那麼就是自己掌握話語權,好比我們在導入其他人所寫的框架時,也必須遵守它們框架的語法、規則。
什麼是分層設計?分層設計的概念是如何進行模塊與包的劃分,每一個目錄就好比一個部門,各司其職,最後的結果就會接近於完美,而獨立劃分就是分層設計的思想與理念。
為什麼需要進行分層設計?相信大家通過下圖能夠有基本概念,分層設計就是為了更好的進行框架整合、代碼管理與維護,在某個"目錄"出現異常時,我只需要對特定的"目錄"進行管理即可有效解決問題,而不會對其他目錄進行牽連。
""" 框架結構 - common 公共方法目錄 - testcase 測試用例目錄 - data 測試數據目錄 - reports 測試報告目錄 - config 配置文件目錄 - logs 日志系統目錄 - funcs 被測函數目錄 - run.py 項目啟動文件 """
新建一個Python package
,命名為common
,之所以我們要創建Python包而不是一個文件夾的主要原因是Python package
中有__init__
,如果沒有這個文件,可能會在導入文件時失敗。故此選擇Python package
。通常而言,如果這個文件夾裡有Python文件,那麼我們會使用Python package
進行創建。
公用目錄是通用的代碼內容,可以理解成無論該框架如何進行移動、修改,公用目錄內容均可以保持不變且在其他項目中,公用目錄的內容可以完全復制過去進行使用。
testcase
中存放的主要是自動化測試用例代碼,裡面包括各類的函數,因為存在py文件,故此我們需要Python package
新建。
data
中主要存放的是測試數據,數據可以是Excel的形式,也可以是Python模塊的形式,故此我們這裡的創建還是使用Python package
。
測試報告的存放路徑在reports
,最終的測試報告不是Python模塊,大多數是以html的方式存在的,在網頁中可展示基礎的數據信息和圖表類信息,故此我們在創建時只需要建普通的文件夾即可,而不需要Python package
。
配置文件目錄為config
,可能會包括數據庫地址、用戶名密碼等常見內容,配置文件有可能會存在Python模塊,我們仍然選用Python package
。
日志存放目錄會存放關於程序運行的日志內容,同樣使用Python package
創建。
被測函數目錄主要是用於Python函數的代碼存放,存放開發的Python函數文件,使用Python package
創建。
在頂級目錄創建Python文件,名為run
,當執行run.py
時則會執行所有的測試用例,主要起到程序運行作用。
在funcs
下創建login.py
,完成被測函數的填寫,在testcase
下創建test_login
,補充一條測試用例:
"""login.py 被測函數"""
def login(username=None, password=None):
if username is None or password is None:
return {
"code": 400, "msg": "用戶名或密碼為空" }
if username == "萌笑天" and password == "123456":
return {
"code": 200, "msg": "登錄成功" }
return {
"code": 300, "msg": "用戶名或密碼錯誤" }
""" test_login.py 測試用例"""
import unittest
from funcs.login import login
class TestLogin(unittest.TestCase):
def test_login_success(self):
username = "萌笑天"
password = "123456"
expected = {
"code": 200, "msg": "登錄成功" }
actual = login(username, password)
self.assertEqual(expected, actual)
如上圖所示,執行結果為一條測試用例,耗時0.003s,測試通過。代表流程已經走通了。
在run.py
添加執行代碼,並預備測試報告生成
import unittest
from unittestreport import TestRunner
from datetime import datetime
suite = unittest.defaultTestLoader.discover("testcase")
# 當前時間
data_str = str(datetime.now().strftime("%Y-%m-%d__%H-%M-%S"))
# 測試報告名稱
reports_name = data_str + "項目框架演示測試報告.html"
runner = TestRunner(suite,
tester="萌笑天",
report_dir="reports",
filename=reports_name)
runner.run()
文件輸出到了reports:
上半部分展示了一個基本的數據匯總,用例的總數、成功失敗、錯誤等用例數量的具體數值,但這非實戰階段,故此測試用例只有1條演示的用例
中間的部分會有一個圖表,圖表的形式呈現上述的數據
最下層是詳細信息,可以查看哪個類、哪個方法測試通過還是失敗,可查看詳情,也支持結果的篩選:
我們在項目中還需要使用到路徑處理,有些時候我們需要讀取對應的路徑來獲取我們想要的文件或數據,那麼需要使用到os路徑模塊,此處不過多的解釋,大家可以先行簡單了解,在後續的實戰階段中會重點講解。
import os
# 獲取當前文件路徑
current_path = os.path.abspath(__file__)
# 獲取config文件夾路徑
config_dir = os.path.dirname(current_path)
# 項目根目錄
root_dir = os.path.dirname(config_dir)
# data 目錄
data_dir = os.path.join(root_dir, "data")
# xlsx文件目錄
case_path = os.path.join(data_dir, "cases.xlsx")
""" 框架執行: 第一步:框架設計、模塊 第二步:在cases裡面寫自動化測試用例 第三步:在run.py收集測試用例,生成測試報告 後續實戰階段講解: 第四步:封裝通用的測試工具,公共代碼 第五步:在用例當中調用log變量以增加日志 第六步:實現excel的數據驅動 """
好啦~以上就是本次文章分享的全部內容啦,你學會了嗎?希望能給大家帶來幫助哦!