一篇打通,pytest自動化測試框架詳細,從0到1精通實戰(一)

目錄:導讀

    • 前言
    • 一、Python編程入門到精通
    • 二、接口自動化項目實戰
    • 三、Web自動化項目實戰
    • 四、App自動化項目實戰
    • 五、一線大廠簡歷
    • 六、測試開發DevOps體系
    • 七、常用自動化測試工具
    • 八、JMeter性能測試
    • 九、總結(尾部小驚喜)


前言

pytest單元測試框架

1、什么是單元測試框架?
單元測試是指在軟件開發當中針對軟件的最小單位(函數、方法)進行正確性的檢查測試

2、單元測試框架有哪些?
Java:junit 和 testing
python:unittest 和 pytest

3、單元測試框架主要做什么?
測試發現:從多個文件里面去找到我們的測試用例
測試執行:按照一定的順序和規則去執行,并生成結果
測試判斷:通過斷言判斷預期結果和實際結果的差異
測試報告:統計測試進度、耗時、通過率、生成測試報告

單元測試框架和自動化測試框架有什么關系

1、什么是自動化測試框架?
把在自動化測試過程中用到的一些功能或者工具,分裝成各個模塊,包括如何進行自動化腳本編寫以及分層功能的基礎模塊,進行持續集成、定時任務的管理模塊,發送測試報告、進行測試結果統計分析的統計模塊等,將這些模塊組成一套可重用的骨架

2、作用
提高測試效率,降低維護成本;
減少人工干預,提高測試的準確性,增加代碼的重用性;
核心思想是:讓不懂代碼的人也能夠通過這個框架去實現自動化測試;

3、pytest單元測試框架和自動化測試框架的關系
單元測試框架:只是自動化測試框架中的組成部分之一
pom設計模式:只是自動化測試框架中的組成部分之一
數據驅動、關鍵字驅動、全局配置文件的封裝、日志監控、selenium,requests二次封裝、斷言、報告郵件等等

pytest簡介

pytest是一個非常成熟的python的單元框架,比unittest更靈活,容易上手;
pytest可以和selenium、requests、appium結合實現web自動化、接口自動化、app自動化;
pytest可以實現測試用例的跳過以及reruns失敗用例重試;
pytest可以和allure生成非常美觀的測試報告;
pytest可以和Jenkins持續集成;
pytest有很多非常強大的插件,并且這些插件能夠實現很多的使用的操作;

# 如
pytest
pytest-html             # (生成html格式的自動化測試報告)
pytest-xdist         # (測試用例分布式執行,多CPU分發)
pytest-ordering          # (用于改變測試用例的執行順序)
pytest-rerunfailures  # (用例失敗后重跑)
allure-pytest         # (用于生成美觀的測試報告)

安裝pytest

安裝pytest:

pip install pytest 

pytest的命名規則

模塊名必須以test_開頭或者以test_結尾;
測試類名必須以Test開頭,并且不能有init方法;
測試方法必須以test開頭;

D1

pytest測試用例的運行方式和執行順序

1、運行方式
主函數模式
運行所有:pytest.main()
指定模塊:pytest.main([“test_01.py”])
指定目錄:pytest.main([“./test_py”])

通過nodeid指定用例運行: nodeid有模塊名、分隔符、類名、方法名、函數名組成

pytest.main(["test_01.py::Test01Class"])  # 指定到類名
pytest.main(["test_01.py::Test01Class::test003"])  # 指定到方法名

2、命令行模式
運行所有:pytest
指定模塊:pytest test_01.py
指定目錄:pytest ./test_py

通過nodeid指定用例運行: pytest test_01.py::Test01Class::test0033.通過讀取pytest.ini配置文件來運行pytest.ini這個文件他是pytest單元測試框架的核心配置文件

位置:一般放在項目的根目錄
編碼:必須是ANSI,可以使用notepad++修改編碼格式
作用:改變pytest默認的行為
運行規則:不管是主函數的模式運行,還是命令行模式運行,都會去讀取這個配置文件

D2

3、執行順序
unittest:根據Ascll的大小來絕對的執行的順序
pytest:默認從上到下
改變默認執行順序:使用mark標記

@pytest.mark.run(order=3)

Pytest生成自帶的html測試報告

安裝pytest-html:

pip install pytest-html

1、直接執行pytest.main() 【自動查找當前目錄下,以test開頭的文件或者以test結尾的py文件】

pytest.main([‘--html=./report.html’]) 

D3

2、pytest.main(“模塊.py”)【運行指定模塊下,運行所有test開頭的類和測試用例】

pytest.main(["--html=./report.html","模塊.py"])

D4

3、運行指定模塊指定類指定用例,冒號分割,并生成測試報告

pytest.main([--html=./report.html’,‘模塊.py::::test_a_001'])

D5

4、Pytest調用語句

pytst.main(['-x','--html=./report.html','t12est000.py'])

-x:出現一條測試用例失敗就退出測試
-s:顯示print內容
-v:顯示更詳細的信息
-vs:這兩個參數一起使用
-n:支持多線程或者分布式運行測試用例
-reruns NUM:失敗用例重跑
-x:只要有一個用例報錯,那么測試停止
–maxfail=2:出現兩個用例失敗就停止
-k:根據測試用例的部分字符串指定測試用例

5、使用@pytest.mark.skip()跳過該用例(函數)

class Test01Class():@pytest.mark.skip  # 跳過test001def test001(self):assert 5 == 4  # 斷言

D6

6、pytest運行結果字符意義
.:點號,表示用例通過
F:表示失敗 Failure
E:表示用例中存在異常 Error
S:表示跳過 skipped

下面是我整理的2023年最全的軟件測試工程師學習知識架構體系圖

一、Python編程入門到精通

請添加圖片描述

二、接口自動化項目實戰

請添加圖片描述

三、Web自動化項目實戰

請添加圖片描述

四、App自動化項目實戰

請添加圖片描述

五、一線大廠簡歷

請添加圖片描述

六、測試開發DevOps體系

請添加圖片描述

七、常用自動化測試工具

請添加圖片描述

八、JMeter性能測試

請添加圖片描述

九、總結(尾部小驚喜)

在人生的舞臺上,奮斗是最美的旋律。不畏困難,放飛夢想,用汗水澆灌成長的花朵。堅持信念,砥礪前行,只有不停奮斗,才能贏得屬于自己的榮耀與成功。

付出不一定有回報,但不付出卻一定沒有收獲。勇敢面對困難,堅持努力,無畏失敗。奮斗的熱血將點亮未來的路,只要你不停歇地前行,成功的曙光必將照耀你的人生。

每天都是一次重生的機會,勇往直前,追逐夢想吧!不管前方有多少艱難險阻,只要心懷信念,努力拼搏,你將綻放出耀眼的光芒,讓世界為你而改變。

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

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

相關文章

redis學習筆記(七)

文章目錄 zset(有序集合)(1)添加成員(2)獲取score在指定區間的所有成員(3)獲取集合長度(4)獲取指定成員的權重值(5)獲取指定成員在集合…

2308C++簡單異步改造網絡庫

用簡單異步可以輕松改造同步網絡庫從而獲得大幅性能提升,用它改造異步回調網絡庫可以讓我們以同步方式寫代碼,讓代碼更簡潔,可讀性更好,還能避免回調地獄的問題. 本文通過兩個例子分別來介紹如何用簡單異步改造基于asio的同步網絡庫和異步回調網絡庫. 示例依賴了獨立版的asio(…

JavaWeb_總體介紹

文章目錄 1.總括2.JavaWeb項目架構 1.總括 2.JavaWeb項目架構

request.post,json和data

參考 https://zhuanlan.zhihu.com/p/140372568 https://zhuanlan.zhihu.com/p/140372568 介紹 這兩條請求語句使用了不同的參數傳遞方式,有以下區別:1. requests.post(urlhttp://xx.8.84.xx:8000/inference, jsondata)這個語句使用了 json 參數&#…

js設置css變量控制頁面一行展示指定個數的元素

前置知識: CSS變量之var()函數的應用——動態修改樣式 & root的使用 flex相關知識 場景: 動態設置給父元素內子元素設置每行排列幾個 通過 document.body.style.setProperty(--itemNum, 5)設置樣式變量,然后通過給父元素設置display: f…

RocketMQ發送消息失敗:error CODE: 14 DESC: service not available now, maybe disk full

在執行業務時,發現MQ控制臺沒有查詢到消息,在日志中發現消息發送失敗,報錯error CODE: 14 DESC: service not available now, maybe disk full 分析報錯應該是磁盤空間不足,導致broker不能進行正常的消息存儲刷盤,去查…

MySQL 窗口函數是什么,有這么好用

先看這段像天書一樣的 SQL ,看著就頭疼。 SELECTs1.name,s1.subject,s1.score,sub.avg_score AS average_score_per_subject,(SELECT COUNT(DISTINCT s2.score) 1 FROM scores s2 WHERE s2.score > s1.score) AS score_rank FROM scores s1 JOIN (SELECT subject, AVG(sco…

Android 13 MTK平臺添加自定義按鍵,以及CTS問題解決

添加自定義按鍵流程 一般來說上層添加以下幾處修改 驅動層的鍵值上報,讓驅動處理好即可 frameworks / base/core/java/android/view/KeyEvent.java public static final int KEYCODE_DEMO_APP_4 = 304;/** add by songhui for fingerprint Key code */+ public static fina…

IntelliJ IDEA Bookmark使用

1 增加 右鍵行號欄 2 查看 從favorite這里查看 參考IntelliJ IDEA 小技巧:Bookmark(書簽)的使用_bookmark idea 使用_大唐冠軍侯的博客-CSDN博客

neo4j的CQL命令實例演示

天行健,君子以自強不息;地勢坤,君子以厚德載物。 每個人都有惰性,但不斷學習是好好生活的根本,共勉! 文章均為學習整理筆記,分享記錄為主,如有錯誤請指正,共同學習進步。…

07-2_Qt 5.9 C++開發指南_二進制文件讀寫(stm和dat格式)

文章目錄 1. 實例功能概述2. Qt預定義編碼文件的讀寫2.1 保存為stm文件2.2 stm文件格式2.3 讀取stm文件 3. 標準編碼文件的讀寫3.1 保存為dat文件3.2 dat文件格式3.3 讀取dat文件 4. 框架及源碼4.1 可視化UI設計4.2 mainwindow.cpp 1. 實例功能概述 除了文本文件之外&#xff…

pve和openwrt以及我的電腦中網絡的關系和互通組網

情況1 一臺主機 有4個口,分別eth0,eth1,eth2,eth3 pve有管理口 這個情況下 ,沒有openwrt 直接電腦和pve管理口連在一起就能進pve管理界面 情況2 假設pve 的管理口味eth0 openwrt中橋接的是eth0 eth1 eth2 那么電腦連接eth3或者pve管理口設置eth3&#xf…

【C#】設置有線網卡IP地址,子網掩碼,網關,DNS

方法 public partial class ComputerInfo{/// <summary>/// 設置IP地址&#xff0c;子網掩碼&#xff0c;網關&#xff0c;DNS/// </summary>public static List<NetworkAdapterInfo> SetIpAddressSubMaskDnsGeteway(string ipAddress, string subMask, stri…

MySQL庫的操作

文章目錄 MySQL庫的操作1. 創建數據庫2. 字符集和校驗規則(1) 查看系統默認字符集以及校驗規則(2) 查看數據庫支持的字符集和校驗規則(3) 案例(4) 校驗規則對數據庫的影響 3. 查看數據庫4. 修改數據庫5. 刪除數據庫6. 數據庫的備份和恢復(1) 備份(2) 還原 7. 查看連接情況 MySQ…

在 Windows 中恢復數據的 5 種方法

發生數據丟失的原因有多種。無論是因為文件被意外刪除、文件系統或操作系統損壞&#xff0c;還是由于軟件或硬件級別的存儲故障&#xff0c;數據都會在您最意想不到的時候丟失。今天我們重點介紹五種數據恢復方法&#xff0c;以應對意外情況的發生。 1.從另一臺機器啟動硬盤 如…

分享一組天氣組件

先看效果&#xff1a; CSS部分代碼&#xff08;查看更多&#xff09;&#xff1a; <style>:root {--bg-color: #E9F5FA;--day-text-color: #4DB0D3;/* 多云 */--cloudy-background: #4DB0D3;--cloudy-temperature: #E6DF95;--cloudy-content: #D3EBF4;/* 晴 */--sunny-b…

python基礎環境建設(pip、anaconda)

1.pip 配置文件路徑&#xff1a; centos&#xff1a;~/.pip/pip.conf windows: C:\Users\admin\AppData\Roaming\pip\pip.ini 文件內容&#xff1a; [global] index-url http://IP/repository/pypi-tsinghua/simple trusted-hostIP今天centos7.9、python3.6環境 pip install…

Https、CA證書、數字簽名

Https Http協議 Http協議是目前應用比較多應用層協議&#xff0c;瀏覽器對于Http協議已經實現。Http協議基本的構成部分有 請求行 &#xff1a; 請求報文的第一行請求頭 &#xff1a; 從第二行開始為請求頭內容的開始部分。每一個請求頭都是由K-V鍵值對組成。請求體&#xf…

【C++入門到精通】C++入門 —— vector (STL)

閱讀導航 前言一、vector簡介1. 概念2. 特點 二、vector的使用1.vector 構造函數2. vector 空間增長問題?resize 和 reserve 函數 3. vector 增刪查改?operator[] 函數 三、迭代器失效溫馨提示 前言 前面我們講了C語言的基礎知識&#xff0c;也了解了一些數據結構&#xff0…

軟件測試基礎篇——Docker

1、docker技術概述 docker描述&#xff1a;docker是一項虛擬化的容器技術&#xff08;類似于虛擬機&#xff09;&#xff0c;docker技術給使用者提供一個平臺&#xff0c;在該平臺上可以利用提供的容器&#xff0c;對每一個應用程序進行單獨的封裝隔離&#xff0c;每一個應用程…