web 自動化之 Unittest 四大組件

文章目錄

      • 一、如何開展自動化測試
        • 1、項目需求分析,了解業務需求 web 功能納入自動化測試
        • 2、選擇何種方式實現自動化測試
      • 二、Unittest 框架
      • 三、TestCase 測試用例
      • 四、TestFixture 測試夾具 執行測試用例前的前置操作及后置操作
      • 五、TestSuite 測試套件 & TestLoader 用例加載器
        • 1、TestSuite 測試套件
        • 2、TestLoader 用例加載器-用例集
      • 六、TestRunner 測試運行器 執行用例,輸出測試結果
        • 1、用例執行結果狀態:
        • 2、unittest 提供生產測試報告的模塊 TextTestRunner 生成文本格式測試報告

一、如何開展自動化測試

1、項目需求分析,了解業務需求 web 功能納入自動化測試

web 功能:

  • 1、新功能 手工測試
  • 2、老功能 回歸 冒煙用例 納入自動化測試
2、選擇何種方式實現自動化測試
  • 1、工具 robotframework
  • 2、獨立搭建 web 自動化測試框架
  • 3、編寫自動化測試用例
    一邊寫用例,一邊調試用例腳本(用例編輯/封裝/測試數據/腳本調試)
    結合jenkins進行持續集成
  • 4、執行自動化測試用例
    • 1、定時執行、一鍵式執行
    • 2、執行策略
      執行頻率?—回歸頻率、轉測試、上線前、
      自動化測試執行環境----集成測試環境、預發布環境
  • 5、測試報告
    測試結果的匯總
  • 6、維護腳本、優化框架
    企業自動化測試崗位:
    • 1、業務自動化測試 項目自動化測試框架已經構建了 工作內容: 維護框架+用例編輯
    • 2、平臺自動化測試開發 參與自動測試框架構建與設計、+維護框架+用例編輯

二、Unittest 框架

Unittest 框架:框架=測試模塊+測試管理模塊+測試統計模塊,python 的內置模塊
import unittest
Unittest 框架四大組件:

  • 1、TestCase 測試用例
  • 2、TestFixture
  • 3、TestSuite
  • 4、TestRunner

三、TestCase 測試用例

unittest 中 TestCase 部分的規則:

  • 1、用例類必須繼承 Unittest.TestCase,并且以 test 開頭
  • 2、每條用例,都必須以 test 開頭
  • 3、用例執行的順序按照 ASCII:0-9 a-z A-Z 順序來執行用例

unittest也可以通過命令運行:

  • 命令執行 TestShopnc 類下的所有用例: python -m unittest 用例文件名.用例類
  • 執行某一條用例: python -m unittest 用例文件名.用例類.用例名稱
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")

四、TestFixture 測試夾具 執行測試用例前的前置操作及后置操作

Web 自動化:的前置操作及后置操作

class TestShop(unittest.TestCase):# 前置操作def setUp(self):# 加載項目print("setUp 執行每條用例前都會執行函數代碼,有 n 條用例,則會執行 n 次")@ classmethoddef setUpClass(cls):# 前置操作:連接數據,打開瀏覽器print("setUpClass 執行用例前會執行 ,總共只執行一次")# 后置操作def tearDown(self) -> None:# 后置操作:瀏覽器的關閉print("tearDown執行完每條用例前都會執行代碼,有n條用例,則會執行n次")@ classmethoddef tearDownClass(cls) -> None:# 退出瀏覽器,關閉數據庫連接,清理數據print("tearDownClass執行完所有用例之后會執行代碼 ,總共只執行一次")

五、TestSuite 測試套件 & TestLoader 用例加載器

TestSuite 測試套件 & TestLoader 用例加載器:把需要執行的用例匯總到一起

1、TestSuite 測試套件
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
if __name__ == '__main__':suite = unittest.TestSuite()# 添加一個用例suite.addTest(TestShop('test01_login'))suite.addTest(TestShop('test02_select_goods'))# 添加多個用例case_list = [TestShop('test03_into_cart'),TestShop('test04_pay_goods')]suite.addTests(case_list)# 執行 main 函數unittest.main(defaultTest="suite")
2、TestLoader 用例加載器-用例集
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
if __name__ == '__main__':suite = unittest.TestSuite()# 用例加載器# 用例   TestLoader()  suite# loadTestsFromTestCase  加載某個用例類(繼承TestCase)下的所有用例# testcases = unittest.TestLoader().loadTestsFromTestCase(TestShop)# 利用默認加載器實現加載用例testcases = unittest.defaultTestLoader.discover('F:\Pycharm\TestShop\TestCase',pattern='test*.py')suite.addTests(testcases)unittest.main(defaultTest="suite")

六、TestRunner 測試運行器 執行用例,輸出測試結果

1、用例執行結果狀態:
  • 用例執行成功
  • E 用例有異常
  • F 用例執行失敗(斷言失敗)
2、unittest 提供生產測試報告的模塊 TextTestRunner 生成文本格式測試報告
import unittest
from TestReport.testcase_01 import TestCase01
# 加載用例
testcases = unittest.TestLoader().loadTestsFromTestCase(TestCase01)
# 執行用例,生產對應的測試報告TextTestRunner
with open('F:/Pycharm/TestShop/TestReport/report.txt','w+') as f:# 文件寫入測試結果unittest.TextTestRunner(verbosity=2,stream=f).run(testcases)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82788.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82788.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82788.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

42、在.NET 中能夠將?靜態的?法覆寫成靜態?法嗎?

在.NET中,不能將非靜態方法(實例方法)直接覆寫(Override)為靜態方法(Static Method)。以下是關鍵原因和解釋: 1. 方法綁定的本質區別 實例方法:屬于對象的實例&#xf…

8天Python從入門到精通【itheima】-1~5

目錄 1節: 1.Python的優勢: 2.Python的獨具優勢的特點: 2節-初識Python: 1.Python的起源 2.Python廣泛的適用面: 3節-什么是編程語言: 1.編程語言的作用: 2.編程語言的好處:…

3D迷宮探險:偽3D渲染與運動控制的數學重構

目錄 3D迷宮探險:偽3D渲染與運動控制的數學重構引言第一章 偽3D渲染引擎1.1 射線投射原理1.2 紋理透視校正第二章 迷宮生成算法2.1 圖論生成模型2.2 復雜度控制第三章 第一人稱控制3.1 運動微分方程3.2 鼠標視角控制第四章 碰撞檢測優化4.1 層級檢測體系4.2 滑動響應算法第五章…

mac一鍵安裝gpt-sovit教程中,homebrew卡住不動的問題

mac一鍵安裝gpt-sovit教程 僅作為安裝過程中解決homebrew卡住問題的記錄 資源地址 https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/znoph9dtetg437xb#mlAoP 下載一鍵包 下載后并解壓,找到install for mac.sh,終端執行bash空格拖拽in…

git 遠程倉庫管理詳解

Git 的遠程倉庫管理是多人協作和代碼共享的核心功能。以下是 Git 遠程倉庫管理的詳細說明,包括常用操作、命令和最佳實踐。 1. 什么是遠程倉庫? 遠程倉庫(Remote Repository):存儲在網絡服務器上的 Git 倉庫&#xff0…

【超詳細教程】安卓模擬器如何添加本地文件?音樂/照片/視頻一鍵導入!

作為一名安卓開發者或手游愛好者,安卓模擬器是我們日常工作和娛樂的重要工具。但很多新手在使用過程中常常遇到一個共同問題:**如何將電腦本地的音樂、照片、視頻等文件導入到安卓模擬器中?**今天,我將為大家帶來一份全網最詳細的…

使用vite重構vue-cli的vue3項目

一、修改依賴 首先修改 package.json,修改啟動方式與相應依賴 移除vue-cli并下載vite相關依賴,注意一些peerDependency如fast-glob需要手動下載 # 移除 vue-cli 相關依賴 npm remove vue/cli-plugin-babel vue/cli-plugin-eslint vue/cli-plugin-rout…

uniapp|實現手機通訊錄、首字母快捷導航功能、多端兼容(H5、微信小程序、APP)

基于uniapp實現帶首字母快捷導航的通訊錄功能,通過拼音轉換庫實現漢字姓名首字母提取與分類,結合uniapp的scroll-view組件與pageScrollTo API完成滾動定位交互,并引入uni-indexed-list插件優化索引欄性能。 目錄 核心功能實現動態索引欄生成?聯系人列表渲染?滾動定位聯動性…

C#中SetProperty方法使用

SetProperty 是 MVVM(Model-View-ViewModel) 模式中用于實現 屬性變更通知(INotifyPropertyChanged) 的核心方法,主要用于在屬性值變化時自動更新 UI 綁定。 1. SetProperty 的基本作用 更新字段值:修改屬性…

MYSQL 全量,增量備份與恢復

目錄 一 數據備份的重要性 1 數據備份的重要性 2 數據庫備份類型 2.1 從物理與邏輯的角度分類 2.2. 從數據庫的備份策略角度分類從數據庫的備份策略角度,數據庫的備份可分為完全備份、差異備份和增量備份。 3 常見的備份方法 3.1 物理冷備份 物理冷備份時需要在數據庫處…

豆瓣電影Top250數據工程實踐:從爬蟲到智能存儲的技術演進(含完整代碼)

目錄 引言:當豆瓣榜單遇見大數據技術 項目文檔 1.1 選題背景 1.2 項目目標 2. 項目概述 2.1 系統架構設計 2.2 技術選型 2.3 項目環境搭建 2.3.1 基礎環境準備 2.3.2 爬蟲環境配置 2.3.3 Docker安裝ES連接Kibana 安裝IK插件 2.3.4 vscode依賴服務安裝 3. 核心模…

深度 |國產操作系統“破繭而出”:鴻蒙電腦填補自主生態空白

真心為國內能有像華為這樣的技術型公司而自豪,一步步突圍技術封鎖。從這篇信息,可以給軟件從業者一個啟示:鴻蒙生態將是一個新的機會,值得好好把握。 鴻蒙電腦正成為中國電子信息技術新坐標。 超10億鴻蒙生態設備、2800家鴻蒙智…

【網絡安全】——大端序(Big-Endian)??和??小端序(Little-Endian)

字節序(Endianness)是計算機系統中多字節數據(如整數、浮點數)在內存中存儲或傳輸時,??字節排列順序??的規則。它分為兩種類型:??大端序(Big-Endian)??和??小端序&#xf…

六個倉庫合并為一個倉庫,保留master和develop分支的bat腳本

利用git subtree可以實現多個倉庫合并為一個倉庫,手動操作起來太麻煩了,今天花了點時間寫了一個可執行的腳本,現在操作起來就方便多了。 1、本地新建setup.bat文件 2、用編輯器打開(我用的是Notepad) 3、把下面代碼…

使用定時器監視當前PID 如果當前程序關閉 UI_Core.exe 也隨之自動關閉實現方法

使用定時器監視當前PID 如果當前程序關閉 UI_Core.exe 也隨之自動關閉實現方法 描述: C20 QT6.9 VS2022 中使用QProcess::startDetached(“UI_Core.exe”, QStringList(), QString(), &UI_Manage_pid);是啟動目標程序 能否同時告訴目標程序當前宿主程序的PID,在UI_CORE.EX…

神經網絡是如何工作的

人工智能最核心的技術之一,就是神經網絡(Neural Networks)。但很多初學者會覺得它是個黑盒:為什么神經網絡能識別圖片、翻譯語言,甚至生成文章? 本文用圖解最小代碼實現的方式,帶你深入理解&am…

LeetCode熱題100 兩數之和

目錄 兩數之和題目解析方法一暴力求解代碼 方法二哈希代碼 感謝各位大佬對我的支持,如果我的文章對你有用,歡迎點擊以下鏈接 🐒🐒🐒 個人主頁 🥸🥸🥸 C語言 🐿?🐿?🐿…

在線服務器具體是指什么?

在線服務器主要是指一種能夠隨時進行網絡連接、管理和操作的服務器,在線服務器是通過互聯網或者是本地網絡,來為企業和用戶提供數據存儲和網絡服務的,在線服務器也可以是物理服務器或者是虛擬服務器,能夠根據遠程訪問工具進行管理…

OSPF綜合性實驗

實驗拓撲: 第一步:進行子網劃分 172.16.0.0/17 172.16.0000 00 00.00000000 -- area1 172.16.0.1/22 -- AR1--G0/0/0 172.16.0.2/22 -- AR2--G0/0/0 172.16.0.3/22 -- AR3--G0/0/0 172.16.4.1/22 -- AR1-- Lo0 172.16.8.2/22 -- AR2-- Lo0 172.16.12.3/…

WEB前端表單及表格標簽綜合案例

表單標簽綜合案例&#xff1a; 源代碼&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…