web博客系统的自动化测试

server/2024/11/28 16:54:23/

目录

  • 前言
  • 测试用例
  • 编写自动化脚本
    • 测试准备
    • 博客登录页相关测试用例
      • 登陆成功
      • 登录失败
    • 博客首页相关测试用例
      • 登陆成功
      • 登录失败
    • 博客详情页相关测试用例
      • 登录成功
      • 登录失败
    • 博客编辑页相关测试用例
      • 登陆成功
      • 登录失败
  • 编写测试文档
    • 测试类型内容

前言

本次测试是运用个人写的一个博客系统进行自动化测试博客包含登录页,博客首页,博客详情页,博客编辑页。那么我们就进行以上页面进行自动化测试。这里用Edge浏览器进行测试

测试用例

我们设计测试用例的时候,一般都是用思维导图/脑图来进行列表,尽量思维多一些散发,用最少得测试用例覆盖的相对全面。
在这里插入图片描述

编写自动化脚本

我们可以根据上述的测试用例进行自动化脚本的编写,我们需要用到pycharm软件,并且要根据页面进行分类,来保证代码的清晰性和可读性。

测试准备

我们对web页面进行测试的时候,需要创建浏览器对象,然后请求url对页面进行访问,所以我们需要一个特殊的类就是until.py来做一些准备工作。

python">import datetime
import os.pathfrom selenium import webdriver
#因为我用的是Edge浏览器,所以要用edge的service
from selenium.webdriver.edge.service import Serviceclass Diver:diver=""def __init__(self):options=webdriver.EdgeOptions()self.diver=webdriver.Edge(service=Service(verbose = True))def getScreamShot(self):#屏幕截图dirname=datetime.datetime.now().strftime("%Y-%m-%d")if not os.path.exists("../images/"+dirname):os.mkdir("../images/"+dirname)#有路径filename=datetime.datetime.now().strftime("%Y-%m-%d-%H:%M:%S")self.driver.save_screenshot("../images/"+dirname+"/"+filename)BlogDriver=Diver()

Edge其他的web使用方法请查阅:https://learn.microsoft.com/zh-cn/microsoft-edge/webdriver-chromium/?tabs=python

博客登录页相关测试用例

登录页的测试我们是根据登录成功和登录失败的区分的。

登陆成功

测试登录成功的流程:我们需要①先获取页面的元素(用户名框,密码框,登录按钮);②获取元素输入成功登录的密码和用户名,因为我们③登陆成功后首页会有用户名显示,我们可以用这来判断是否登录成功。④退出页面

python">
from selenium.webdriver.common.by import By
from common.until import  BlogDriverclass BlogLogin:driver=""url=""def __init__(self):self.driver=BlogDriver.diverself.url="http://8.137.19.140:9090/blog_login.html"self.driver.get(self.url)self.driver.implicitly_wait(1)def LoginSucTest(self):#捕获页面元素,输入正确的用户名密码 zhangsan 123456self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()#登录成功后,能找到用户昵称,说明登录成功autul=self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")if  autul==None:print("登录不一致,失败")returnself.driver.quit()login=BlogLogin().LoginSucTest()

登录失败

登录失败就很多种情况了,比如说用户名不对,密码对,用户名对,密码不对,密码和用户名都不用,我们可以用其中一种测试就可以。并且通过手动输入,我们会发现他会出现弹窗!所以我们要处理弹窗
在这里插入图片描述
所以我们在登录页如果出现弹窗,那么证明登录失败了,我们只需要解决弹窗就可以了。

python">from time import sleepfrom selenium.webdriver.common.by import By
from common.until import  BlogDriverclass BlogLogin:driver=""url=""def __init__(self):self.driver=BlogDriver.diverself.url="http://8.137.19.140:9090/blog_login.html"self.driver.get(self.url)self.driver.implicitly_wait(1)def LoginSucTest(self):#捕获页面元素,输入正确的用户名密码 zhangsan 123456self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")self.driver.find_element(By.CSS_SELECTOR,"#submit").click()#登录成功后,能找到用户昵称,说明登录成功autul=self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")if  autul==None:print("登录不一致,失败")returnself.driver.quit()def LoginFailTest(self):#捕获页面元素,输入正确的用户名,错误的密码 zhangsan 1234567self.driver.find_element(By.CSS_SELECTOR,"#username").send_keys("zhangsan")self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("1234567")#密码不对self.driver.find_element(By.CSS_SELECTOR,"#submit").click()#存在弹窗证明登录失败,处理弹窗sleep(2)#这里必须休眠,是因为处理速度太快了,会造成他找不到alert=self.driver.switch_to.alertalert.accept()self.driver.quit()
login=BlogLogin().LoginFailTest()

博客首页相关测试用例

对博客首页的测试,我们要分为登录成功后的测试和登录失败的测试。

登陆成功

我们要测试登录成功情况下的,所以我们就需要让用户先登录成功,这个时候我们可以用这个形式。

python">#runTest.py
from time import sleep
from common.until import BlogDriver
from test import Bloglogin
from test import BlogListif __name__=="__main__":Bloglogin.BlogLogin().LoginSucTest()sleep(2)#登录成功之后,测试列表BlogList.BlogList().ListTestByLogin()sleep(2)#统一退出BlogDriver.diver.quit()

我们测试用例中需要测试他是否存在,所以直接检查是否存在即可,如果不存在会报错!

python">#博客首页测试
from selenium.webdriver.common.by import Byfrom common.until import BlogDriverclass BlogList:driver=""url=""def __init__(self):self.driver=BlogDriver.diverself.url="http://8.137.19.140:9090/blog_list.html"self.driver.get(self.url)def ListTestByLogin(self):#测试首页博客列表中的标题存在self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.title")#测试首页博客列表中的内容存在self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > div.desc")#测试首页博客列表中的查看存在self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(1) > a")#测试首页的用户名是否存在self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")bloglist=BlogList().ListTestByLogin()

登录失败

因为登录失败的情况下,我们会出现弹窗,如果是弹窗的话,不解决弹窗是没有办法锁定任何元素的,那么我么你直接访问博客列表详情页会怎么样呢?
当我手动测试的时候,他会直接返回登录页。
经过我们测试,发现登录失败,在访问此页面,就会报错没有找到这些元素,也就是说登录失败,是没有办法访问博客列表页的
在这里插入图片描述

python">from time import sleep
from common.until import BlogDriver
from test import Bloglogin
from test import BlogListif __name__=="__main__":Bloglogin.BlogLogin().LoginFailTest()sleep(2)#登录失败之后,测试列表BlogList.BlogList().ListTestByLogin()sleep(2)#统一退出BlogDriver.diver.quit()

博客详情页相关测试用例

对博客详情页的测试,我们要分为登录成功后的测试和登录失败的测试。

登录成功

当我们登录成功的时候,进入列表页,点击查看全文后,就可以查看博客的详细内容,包括标题、时间、内容、最好查看一下用户名。
在这里插入图片描述

python">from selenium.webdriver.common.by import Byfrom common.until import BlogDriverclass BlogDetail:driver = ""url = ""def __init__(self):self.driver = BlogDriver.diverself.url = "http://8.137.19.140:9090/blog_detail.html?blogId=7681"self.driver.get(self.url)#登录状态下的博客详情页def BlogDetaulTest(self):#进入列表,要点击查看内容#检查标题self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.title")#时间self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div > div.date")#内容self.driver.find_element(By.CSS_SELECTOR, "#detail > p")#用户名self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")

登录失败

登录失败,会发现我们找不到元素,也就是无法进入博客详细页。
在这里插入图片描述

python">from time import sleep
from common.until import BlogDriver
from test import Bloglogin
from test import BlogList
from test import BlogDetailif __name__=="__main__":Bloglogin.BlogLogin().LoginFailTest()sleep(2)#失败,列表点击后,查看内容BlogDetail.BlogDetail().BlogDetaulTest()sleep(2)#统一退出BlogDriver.diver.quit()

博客编辑页相关测试用例

对博客编辑页的测试,我们要分为登录成功后的测试和登录失败的测试。

登陆成功

如果登录成功,我们可以通过点击写博客,进行博客的编辑。我们需要写标题,然后内容,然后点击发布。
但是根据以下代码编写后发现,我们无法对MD外部插件进行空时,这个时候我们可以对md上述符号进行控制,编辑一部分内容。

在这里插入图片描述
在这里插入图片描述

python">from selenium.webdriver.common.by import Byfrom common.until import BlogDriverclass BlogEdit:driver = ""url = ""def __init__(self):self.driver = BlogDriver.diverself.url = "http://8.137.19.140:9090/blog_edit.html"self.driver.get(self.url)#正确发布博客def EditSucTest(self):#进入列表页,点击写博客self.driver.find_element(By.CSS_SELECTOR, "body > div.nav > a:nth-child(5)").click()#成功发布博客:标题写入,内容存在self.driver.find_element(By.CSS_SELECTOR, "#title").send_keys("自动化测试")self.driver.find_element(By.CSS_SELECTOR, "#editor > div.CodeMirror.cm-s-default.CodeMirror-wrap > div.CodeMirror-scroll").send_keys("博客内容测试博客内容测试博客内容测试博客内容测试")#点击发布文章self.driver.find_element(By.CSS_SELECTOR, "#submit").click()

登录失败

因为登录页面右上角,直接有点写博客按钮,所以我们可以直接访问网页,模拟没有登录的时候是否可以返回呢?
结果就是直接返回了登录页面。

python">from time import sleep
from common.until import BlogDriver
from test import Bloglogin
from test import BlogList
from test import BlogDetail
from test import BlogEditif __name__=="__main__":#点击写博客,然后编辑BlogEdit.BlogEdit().EditSucTest()sleep(5)#统一退出BlogDriver.diver.quit()

编写测试文档

测试文档包括以下几部分:项目背景、项目简介、测试计划、测试工具、设计的测试类型(功能测试、性能测试、自动化测试)、测试类型测内容、项目测试的bug简述、测试结论等。

测试类型内容

这里主要写你的测试类型中的内容,比如测试用例和测试的脚本。


http://www.ppmy.cn/server/145675.html

相关文章

后台管理-动态路由配置以及用户权限管理(vue3+element plus+koa+Sequelize )

前言 之前开发了一个校园二手物品交易网站的demo 前端采用Vue2结合Element UI 后端采用了koa 、Sequelize 、Mysql 在工作了一年多之后,突然想针对工作所学来完善一下自己手里的项目 想要做一个针对于该平台或多个平台,来进行路由配置和角色集中管理…

MyBatis中的${}和#{}区别

在MyBatis 中,${}和#{}是用于传递参数到SQL语句中的两种不同方式,它们的主要区别在于处理方式和用途: 1. #{}(预处理参数) #{}是参数占位符,MyBatis会将其替换为预处理语句(PreparedStatement)的参数占位符?。使用 #{}时&#x…

和数集团业务说明会(南京站)顺利举办

2024年11月24日,上海和数集团业务说明会(南京站),在南京希尔顿酒店成功举办。 和数集团董事长兼总经理唐毅先生,以其敏锐的行业洞察力和丰富的实践经验,向与会者分享了和数集团在区块链领域的丰厚研究成果和…

利用Java爬虫获取1688商品类目:技术解析与代码示例

在电商领域,1688作为中国领先的B2B电商平台,其商品类目的数据对于商家来说具有极高的价值。通过自动化的爬虫技术,我们可以高效地获取这些数据,为市场分析、价格监控和库存管理等提供支持。本文将详细介绍如何使用Java编写爬虫程序…

华三(HCL)和华为(eNSP)模拟器共存安装手册

接上章叙述,解决同一台PC上同时部署华三(HCL)和华为(eNSP)模拟器。原因就是华三HCL 的老版本如v2及以下使用VirtualBox v5版本,可以直接和eNSP兼容Oracle VirtualBox,而其他版本均使用Oracle VirtualBox v6以上的版本,…

工业一体机在自动化产线的作用及核心优势有哪些

在当今自动化生产的浪潮中,工业一体机作为关键的智能设备,在自动化产线中发挥着不可或缺的作用,并展现出诸多核心优势。 一、工业一体机在自动化产线的作用 1、数据采集与监控中心 工业一体机能够连接自动化产线上的各种传感器、设备控制器…

计算机网络socket编程(6)_TCP实网络编程现 Command_server

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 计算机网络socket编程(6)_TCP实网络编程现 Command_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记,欢迎大家在评论…

Leetcode(快慢指针习题思路总结,持续更新。。。)

这种模式,有一个非常出门的名字,叫龟兔赛跑。这种算法的两个指针的在数组上(或是链表上,序列上)的移动速度不一样。快的一个指针肯定会追上慢的一个(可以想象成跑道上面跑得快的人套圈跑得慢的人&#xff0…