【web自動化測試】實戰

web自動化測試就是對界面的測試

1、編寫測試用例

2、參考測試用例,創建自動化測試項目,編寫自動化測試腳本

論壇登錄頁:ForumLoginTest.py

論壇首頁:ForumListTest.py

論壇詳情頁:ForumDetailTest.py

論壇編輯頁:ForumEditTest.py

創建瀏覽器對象,請求url訪問對應的頁面,進入到對應頁面之后才可以執行一系列的測試用例

我們不能每次都進行創建。因此我們需要

Utils.py 生成測試文件中需要用到的配置內容

下面是項目設計的項目路徑:

Utils.py

#創建一個瀏覽器對象
import os
import sys
from datetime import datetimefrom selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManagerclass Driver:driver = ""def __init__(self):options = webdriver.ChromeOptions() #此時沒有添加任何的配置,此時options為空self.driver = webdriver.Chrome(service = Service(ChromeDriverManager().install()),options = options)#通過什么服務來打開瀏覽器:創建好的驅動來打開谷歌瀏覽器,而驅動在WebDriverManager里面,我們就要調用ChromeDriverManager,后面再調用一個install方法,表示要創建一個驅動 options是添加瀏覽器的配置def getScreeShot(self):#創建屏幕截圖#圖片文件名稱以時間來生成,我們將同一天的圖片放到同一個文件夾里面#因此,先創建文件夾,存放同一天的圖片dirname = datetime.datetime.now().strftime("%Y-%m-%d")if not os.path.exits("../images/"+dirname):os.mkdir("../images/"+dirname) #文件夾不存在就創建一個#圖片保存的很多,如何進行區分呢因此要拼接上調用的方法名filename = sys._getframe().f_back.f_code.co_name + "-" + datetime.datetime.now().strftime("%Y-%m-%d-%H%M%S")+".png"#圖片路徑:../images/調用方法(LoginSucTest、LoginFailTest)-2025-08-05/2025-08-05-173456.pngself.driver.save_screenshot("../images/dirname/filename")#圖片保存的路徑和文件名
#如果每次調用類的時候,創建類對象的時候,都會調用構造方法,都會創建出一個driver,這樣就會創建出很多driver
#顯然是與我們的預期不符的
#因此,我們就要使用單例模式---允許大家調用driver 但是每個測試文件調用的都是一個driver
ForumDriver = Driver()  #其他的測試文件想要調用driver成員,必須通過ForumDriver.Driver(),來調用driver方法

?ForumList.py

from selenium.webdriver.common.by import Byfrom common.Utils import ForumDriver
#博客首頁測試用例
class ForumList:url = ""driver = ""def __init__(self):self.url = ""self.driver = ForumDriver.driverself.driver.get(self.url)#測試首頁def ListTestByLogin(self):#測試論壇標題是否存在self.driver.find_element(By.CSS_SELECTOR,"body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > h1 > a > img")#添加屏幕截圖ForumDriver.getScreeShot()
list = ForumList()
list.ListTestByLogin()

ForumLogin.py

from selenium.webdriver.common.by import By
from common.Utils import ForumDriver#測試博客登錄頁面
class ForumLogin:url = ""driver = ""def __init__(self):self.url = "http://127.0.0.1:58080/sign-in.html"self.driver = ForumDriver.driverself.driver.get(self.url)#成功登錄的測試用例def LoginSucTest(self):self.driver.find_element(By.CSS_SELECTOR, "#username").clear()#我們可以在輸入的時候都進行輸入框清除,是為了防止用例執行順序錯誤,因此最好在輸入用例之前最好先做清除self.driver.find_element(By.CSS_SELECTOR, "#password").clear()self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("lhh")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()#能夠找到比特論壇說明登錄成功,否則登錄失敗self.driver.find_element(By.CSS_SELECTOR, "body > div.page > header.navbar.navbar-expand-md.navbar-light.d-print-none > div > h1 > a > img")#登錄成功之后返回到登錄界面才能繼續測試異常登錄self.driver.back()#返回登錄成功頁面之后,不能直接繼續進行send_keys,這樣會造成拼接,而不是替換。因此我們要先進行清空(clear)再進行send_keys#異常登錄的測試用例def LoginFailTest(self):self.driver.find_element(By.CSS_SELECTOR, "#username").clear()self.driver.find_element(By.CSS_SELECTOR, "#password").clear()self.driver.find_element(By.CSS_SELECTOR, "#username").send_keys("lhh")self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")self.driver.find_element(By.CSS_SELECTOR, "#submit").click()#檢查是否登錄失敗actual = self.driver.find_element(By.CSS_SELECTOR,"body > div.jq-toast-wrap.bottom-right > div").text#通過斷言檢測一下是否符合預期assert actual =="用戶名或密碼錯誤"self.driver.quit()login = ForumLogin()
login.LoginSucTest()
login.LoginFailTest()

RunTest.py

from tests.ForumLogin import ForumLogin
from tests.ForumList import ForumList
from common.Utils import ForumDriverif __name__ == "__main__":ForumLogin.ForumLogin().LoginFailTest()ForumLogin.ForumLogin().LoginSucTest()#登錄成功之后就可以直接調用博客首頁測試首頁的用例ForumList.ForumList().ListTestByLogin()#指定瀏覽器退出ForumDriver.driver.quit()

3、測試報告

當我們執行完項目測試之后,認為項目已經完成了就可以編寫測試報告

至少完成了一次功能測試,要再加強測試質量就可以進行編寫自動化腳本

提測:提交給測試人員測試的時間

回歸測試:系統每個頁面都是獨立來測試的,最后還需要加上回歸測試,將頁面整體再回歸一下

項目是分開提測還是整體提測之后測試再介入?

取決于不同的頁面之間是否存在測試耦合的地方,如果存在大量的耦合則需要整體提測,反之可以分開提測

1、測試計劃:

功能、后端開發、前端開發、提測日期、測試、測試日期、測試結果

2、bug簡述?

本次項目測試發現了多少個bug,有多少個崩潰級別的bug,有多少個嚴重級別的bug,有多少個一般級別的bug?

bug標題? ? ? ? ? ? ? 報告人(提bug的人)? ? ? ? ? ? 是否修復

放上bug鏈接? ? ? ? 張三? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 修復完成

放上bug鏈接? ? ? ? 李四? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 修復完成

3、遺留問題

例如:

1)需求變更,本次由于xxxx原因,推遲到下一個版本進行修復

2)低優先級的bug,由于xxx原因,推遲到下一個版本進行修復

3)流程上的問題,需求上的問題

..................................等等

4、測試結論

本次測試項目測試通過,項目開發耗時多久,項目測試耗時多久

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

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

相關文章

在Maxscript中隨機化對象變換、顏色和材質

只需幾行Maxscript,即可為3ds Max場景帶來更多活力和變化! 在本文中,您將學習如何快速隨機化選定對象的位置、旋轉、線顏色和材質。 非常適合在ArchViz、動態圖形和產品可視化項目中創建更自然、更少機械的布局。 為什么要使用隨機化腳本? 1.快速為場景添加自然隨機性 2.…

分類數據集 - 交通事故場景分類數據集下載

數據集介紹:交通事故場景分類數據集,真實交通場景高質量圖片數據;適用實際項目應用:公共場所監控場景下是否發生交通事故檢測項目,以及作為監控場景通用交通檢測數據集場景數據的補充;數據集類別&#xff1…

內網公網詳解,及無公網IP內網穿透給外網直接遠程連接訪問的具體實現方法步驟

一、什么是內網、外網1、內網IP(局域網IP)是指在私有網絡或局域網內部使用的IP地址,無法直接從互聯網訪問,需通過NAT(網絡地址轉換)技術實現對外通信。內網IP(Intranet IP)是專為局域…

Redis協議數據遷移方式

主從復制(REPLICAOF/SLAVEOF):目標實例掛為從節點,通過復制協議全量增量同步后切換為主。模擬從節點工具:模擬復制協議同步數據,常見兩種實現:(1) 拉取全量和增量命令流,在本地生成 …

英語中日期與時間縮寫

日常使用中,時間縮寫無處不在。掌握這些縮寫不僅能提高溝通效率,還能讓您的英語表達更加地道和專業。本文將系統性地介紹英語中各類時間相關縮寫,包括月份、星期、時刻表達等,并提供實用記憶技巧和應用場景。 一、時間縮寫基礎概…

【Spring Cloud】-- RestTeplate實現遠程調用

實現遠程調用有很多種方式,這里我們使用RestTemplate來進行實現。 REST :表現層資源狀態轉移(資源在網絡中以某種表現形式進行狀態轉移),是一種軟件架構風格,狀態轉移:數據狀態的變化。 表現層&…

2025年信創政策解讀:如何應對國產化替代挑戰?(附禪道/飛書多維表格/華為云DevCloud實戰指南)

本文核心產品:??禪道(國產項目管理工具)、飛書多維表格(協同辦公工具)、華為云DevCloud(云端研發平臺)?? ——在“自主可控”成為國家戰略關鍵詞的2025年,國產化替代已從“可選動…

如何讓 RAG 檢索更高效?——大模型召回策略全解

如何讓 RAG 檢索更高效?——大模型召回策略全解 一、引子:RAG 的“強”靠得住嗎? RAG(Retrieval-Augmented Generation)作為一種將文檔檢索與大語言模型結合的框架,已成為企業落地知識問答、搜索增強、智能…

Bilateral Reference for High-Resolution Dichotomous Image Segmentation

代碼來源 https://github.com/ZhengPeng7/BiRefNet 模塊作用 DIS 是一種旨在對高分辨率圖像中的目標物體進行精確分割的技術,尤其適用于具有復雜細微結構的物體,例如細長的邊緣或微小細節。傳統方法在處理這類任務時往往難以捕捉細微特征或恢復高分辨…

RAGFlow 0.20.0 : Multi-Agent Deep Research

Deep Research:Agent 時代的核心能力2025 年被稱為 Agent 落地元年,在解鎖的各類場景中,最有代表性之一,就是 Deep Research 或者以它為基座的各類應用。為什么這么講? 因為通過 Agentic RAG 及其配套的反思機制&#…

CMakeLists.txt學習

一:#是行注釋 ,[[ 塊注釋 ]]0.cmake_minimum_required: 指定使用的cmake的最低版本1.project() 定義工程名稱并可以指定工程的版本,工程描述,web主頁地址,支持的語言(默認情況支持所有語言)2.…

Pytorch-04 搭建神經網絡架構工作流

搭建神經網絡架構 在pytorch中,神經網絡被抽象成由一系列對數據執行特定操作的層或者模塊組成,比如下面的Attention實現,每個塊都是一個模塊或者層。 如果你想快速搭建網絡架構,torch.nn這個命名空間提供了所有很多開箱即用的層…

從“碎片化”到“完美重組”:IP報文的分片藝術

前言 在網絡通信中,當IP層需要傳輸的數據包大小超過數據鏈路層的MTU限制時,就必須進行分片處理。本文將完整解析IP分片的工作機制,包括分片字段的作用、如何減少分片,以及分片報文的組裝原理。 IP報頭解析請參考&#xff…

[GESP202306 四級] 2023年6月GESP C++四級上機題超詳細題解,附帶講解視頻!

本文為2023年6月GESP C四級的上機題目的詳細題解!覺得寫的不錯或者有幫助可以點個贊啦! (第一次講解視頻,有問題可以指出,不足之處也可以指出) 目錄 題目一講解視頻: 題目二講解視頻: 題目一: 幸運數 題目大意: …

內網穿透 FRP 配置指南

關鍵詞:內網穿透、FRP配置、frps、frpc、遠程訪問、自建服務器、反向代理、TCP轉發、HTTP轉發 在開發或部署項目時,我們經常遇到內網設備無法被公網訪問的問題,例如你想從外網訪問你家里的 NAS、遠程調試開發板,或是訪問本地測試環…

SpringBoot 信用卡檢測、OpenAI gym、OCR結合、DICOM圖形處理、知識圖譜、農業害蟲識別實戰

信用卡欺詐檢測通常使用公開數據集 數據準備與預處理 信用卡欺詐檢測通常使用公開數據集如Kaggle的信用卡交易數據集。數據預處理包括處理缺失值、標準化數值特征、處理類別特征。在Spring Boot中,可以使用pandas或sklearn進行數據預處理。 // 示例:使用Spring Boot讀取CS…

使用 Docker 部署 Golang 程序

Docker 是部署 Golang 應用程序的絕佳方式,它可以確保環境一致性并簡化部署流程。以下是完整的指南: 1. 準備 Golang 應用程序 首先確保你的 Go 應用程序可以正常構建和運行。一個簡單的示例 main.go: package mainimport ("fmt""net/http" )func ha…

從零開始的CAD|CAE開發: LBM源碼實現分享

起因:上期我們寫了流體仿真的經典案例: 通過LBM,模擬計算渦流的形成,當時承諾: 只要驗證通過,就把代碼開源出來;ok.驗證通過了,那么我也就將代碼全都貼出來代碼開源并貼出:public class LidDrivenCavityFlow : IDisposable{public LidDrivenCavityFlow(int width 200, int hei…

倉庫管理系統-17-前端之物品類型管理

文章目錄 1 表設計(goodstype) 2 后端代碼 2.1 Goodstype.java 2.2 GoodstypeMapper.java 2.3 GoodstypeService.java 2.4 GoodstypeServiceImpl.java 2.5 GoodstypeController.java 3 前端代碼 3.1 goodstype/GoodstypeManage.vue 3.2 添加菜單 3.3 頁面顯示 1、goodstype表設…

共識算法深度解析:PoS/DPoS/PBFT對比與Python實現

目錄 共識算法深度解析:PoS/DPoS/PBFT對比與Python實現 1. 引言:區塊鏈共識的核心挑戰 2. 共識算法基礎 2.1 核心設計維度 2.2 關鍵評估指標 3. PoS(權益證明)原理與實現 3.1 核心機制 3.2 Python實現 4. DPoS(委托權益證明)原理與實現 4.1 核心機制 4.2 Python實現 5. P…