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、測試結論
本次測試項目測試通過,項目開發耗時多久,項目測試耗時多久