当前位置: 首页 > web >正文

【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.xdnf.cn/news/17196.html

相关文章:

  • scikit-learn工具介绍
  • Android Framework代码屏蔽未接来电振动及声音通知
  • 【Linux系统编程】线程概念与控制
  • 【力扣 Hot100】 刷题日记
  • 微服务架构及常见微服务技术栈
  • 【motion】HumanML3D 的安装2:psbody-mesh安装成功
  • ubuntu24中部署k8s 1.30.x-底层用docker
  • 海信IP810N/海信IP811N_海思MV320-安卓9.0主板-TTL烧录包-可救砖
  • 第13届蓝桥杯Scratch_选拔赛_初级组_真题2022年1月22日
  • AcWing 3690:求交点 ← 复旦大学考研机试题 + 克莱姆法则
  • DHCP 握手原理
  • 【学习嵌入式day-18-数据结构-循环链表】
  • 代码随想录day57图论7
  • CodeBuddy IDE 使用测评——半小时做一个web可视化数据工具
  • 基于WOA鲸鱼优化的VMD-GRU时间序列预测算法matlab仿真
  • uniapp 类似popover气泡下拉框组件
  • LeetCode——2683. 相邻值的按位异或
  • Spring Boot 与 Ollama 集成部署私有LLM服务 的完整避坑指南,涵盖 环境配置、模型管理、性能优化 和 安全加固
  • 【Electron】electron-vite中基于electron-builder与electron-updater实现程序远程自动更新,附源码
  • 对于包含大量文件的程序的便捷makefile操作
  • 建筑地产安全监控误报率↓77%:陌讯多模态融合算法实战解析
  • 布控球是什么?布控球有什么作用?什么场景下会使用到布控球设备?一篇短文带你了解
  • Windows驱动更新下载工具,电脑硬件设备驱动程序自动安装下载更新,可备份还原!键盘鼠标声卡网卡显卡主板硬盘驱动都可以下载,免费使用的神器!
  • 【软考中级网络工程师】2021年下半年上午真题及答案解析
  • 【科研绘图系列】R语言绘制误差棒图
  • C++继承关系中,深度解析类内存布局与多态的实现
  • PDF 文本提取技术深度对比:基于规则与基于模型的两种实现
  • 【乐企板式文件生成工程】关于乐企板式文件(PDF/OFD/XML)生成工程介绍
  • 结合opencv解释图像处理中的结构元素(Structuring Element)
  • C语言的结构体与联合体