程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

【Python自動化測試20】接口自動化測試框架模型搭建

編輯:Python

文章目錄

  • 一、前言
  • 二、框架搭建流程
    • 2.1 項目創建
    • 2.2 README文件
    • 2.3 .gitignore文件
    • 2.4 什麼是測試框架?
    • 2.5 分層設計
    • 2.6 框架搭建
      • 2.6.1 公用目錄(common)
      • 2.6.2 測試用例目錄(testcase)
      • 2.6.3 測試數據目錄(data)
      • 2.6.4 測試報告目錄(reports)
      • 2.6.5 配置文件目錄(config)
      • 2.6.6 日志存放目錄(logs)
      • 2.6.7 被測函數目錄(funcs)
      • 2.6.8 運行文件(run.py)
    • 2.7 測試函數
    • 2.8 執行文件
    • 2.9 測試報告
    • 2.10 路徑處理
    • 2.11 知識小結

一、前言

本文章主要講解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講解

二、框架搭建流程

2.1 項目創建

框架搭建前必定是以一個項目的形式存在的,故此我們需要新建一個項目,你可以通過Open打開原有項目的一個包,以此來獨立成一個項目,也可以直接使用New Project來創建一個新項目。

2.2 README文件

在任何一個項目中,我們都可以看到README這個文件,README文件是一個項目的說明文檔,其中會包括基礎的文件說明、框架搭建及維護的作者,框架認知、框架體系、框架結構、框架作用、項目說明、代碼使用規范和注意事項等內容,具體內容通常依據個人或項目需要進行文件說明,文件可以采用md形式,也可以采用txt形式,可以附上一些說明,例如:

2.3 .gitignore文件

通常而言,我們項目中的代碼需要進行版本控制,行業中常見的是svn與git,.gitignore文件用於git版本控制,而.gitignore文件的作用是:將特定的文件移除,不會進入至版本控制系統當中,不會進行上傳。

比如代碼運行所產生的緩存文件,這些緩存文件大多數會放入至__pycache__文件夾中,故此我們可以選擇該文件夾,不納入版本控制系統。還有項目創建所生成的,idea/文件夾,我們也可以不納入版本控制。

在真實項目中需要特別注意,涉及到敏感數據,絕對不要放入至版本控制當中,例如測試賬號、數據庫地址等等,這樣會暴露項目內容,嚴重會追究法律責任,如果你是在看本人文章的讀者且正在使用公司項目實戰,請務必小心!

不納入版本控制的做法很簡單,只需要在.gitignore文件中添加對應的文件夾或文件即可,添加一個後並換行可添加第二個,則代表該文件或文件夾不納入版本控制,後續的具體內容有興趣大家可以繼續了解。

2.4 什麼是測試框架?

框架在生活中也能夠比較常見,例如建造一座高樓大廈時,我們需要固定好這個大樓的外層結構,確保建造時大樓是筆直的,確保不會晃動,這就是高樓大廈的框架,而房屋的室內室外等均屬於填充內容。

測試框架也是如此,我們需要搭建起一個自動化的測試框架,可重復設計和利用的內容,寫的代碼就是在進行框架填充,代碼中會包括:

""" 工具、組件。-- 專門處理excel的工具、記錄logger日志的工具、生成日志的工具等等 """

框架即意味著規則、規矩,任何人使用框架不能夠違背,框架沒有標准答案,只要你自己是框架的設計者,那麼就是自己掌握話語權,好比我們在導入其他人所寫的框架時,也必須遵守它們框架的語法、規則。

2.5 分層設計

什麼是分層設計?分層設計的概念是如何進行模塊與包的劃分,每一個目錄就好比一個部門,各司其職,最後的結果就會接近於完美,而獨立劃分就是分層設計的思想與理念。

為什麼需要進行分層設計?相信大家通過下圖能夠有基本概念,分層設計就是為了更好的進行框架整合、代碼管理與維護,在某個"目錄"出現異常時,我只需要對特定的"目錄"進行管理即可有效解決問題,而不會對其他目錄進行牽連。

""" 框架結構 - common 公共方法目錄 - testcase 測試用例目錄 - data 測試數據目錄 - reports 測試報告目錄 - config 配置文件目錄 - logs 日志系統目錄 - funcs 被測函數目錄 - run.py 項目啟動文件 """

2.6 框架搭建

2.6.1 公用目錄(common)

新建一個Python package,命名為common,之所以我們要創建Python包而不是一個文件夾的主要原因是Python package中有__init__,如果沒有這個文件,可能會在導入文件時失敗。故此選擇Python package。通常而言,如果這個文件夾裡有Python文件,那麼我們會使用Python package進行創建。

公用目錄是通用的代碼內容,可以理解成無論該框架如何進行移動、修改,公用目錄內容均可以保持不變且在其他項目中,公用目錄的內容可以完全復制過去進行使用。

2.6.2 測試用例目錄(testcase)

testcase中存放的主要是自動化測試用例代碼,裡面包括各類的函數,因為存在py文件,故此我們需要Python package新建。

2.6.3 測試數據目錄(data)

data中主要存放的是測試數據,數據可以是Excel的形式,也可以是Python模塊的形式,故此我們這裡的創建還是使用Python package

2.6.4 測試報告目錄(reports)

測試報告的存放路徑在reports,最終的測試報告不是Python模塊,大多數是以html的方式存在的,在網頁中可展示基礎的數據信息和圖表類信息,故此我們在創建時只需要建普通的文件夾即可,而不需要Python package

2.6.5 配置文件目錄(config)

配置文件目錄為config,可能會包括數據庫地址、用戶名密碼等常見內容,配置文件有可能會存在Python模塊,我們仍然選用Python package

2.6.6 日志存放目錄(logs)

日志存放目錄會存放關於程序運行的日志內容,同樣使用Python package創建。

2.6.7 被測函數目錄(funcs)

被測函數目錄主要是用於Python函數的代碼存放,存放開發的Python函數文件,使用Python package創建。

2.6.8 運行文件(run.py)

在頂級目錄創建Python文件,名為run,當執行run.py時則會執行所有的測試用例,主要起到程序運行作用。

2.7 測試函數

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,測試通過。代表流程已經走通了。

2.8 執行文件

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()

2.9 測試報告

文件輸出到了reports:

上半部分展示了一個基本的數據匯總,用例的總數、成功失敗、錯誤等用例數量的具體數值,但這非實戰階段,故此測試用例只有1條演示的用例

中間的部分會有一個圖表,圖表的形式呈現上述的數據

最下層是詳細信息,可以查看哪個類、哪個方法測試通過還是失敗,可查看詳情,也支持結果的篩選:

2.10 路徑處理

我們在項目中還需要使用到路徑處理,有些時候我們需要讀取對應的路徑來獲取我們想要的文件或數據,那麼需要使用到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")

2.11 知識小結

""" 框架執行: 第一步:框架設計、模塊 第二步:在cases裡面寫自動化測試用例 第三步:在run.py收集測試用例,生成測試報告 後續實戰階段講解: 第四步:封裝通用的測試工具,公共代碼 第五步:在用例當中調用log變量以增加日志 第六步:實現excel的數據驅動 """


好啦~以上就是本次文章分享的全部內容啦,你學會了嗎?希望能給大家帶來幫助哦!



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved