博客系统——测试报告(python)
·
一、测试目标及测试任务概括
验证博客系统各个模块功能完整性,以及确保用户登录功能,首页,文章详情页和发布功能等核心模块符合要求
二、测试文档
| 类别 | 配置/版本 |
|---|---|
| 硬件 | Dell G15 5530 |
| 手动测试浏览器 | Microsoft Edge版本 148.0.3967.83 |
| 开发工具 | Pycharm 2025.3.1 |
| 自动化测试工具 | Selenum 4.0.0 |
| 操作系统 | Windows 11 家庭中文版 |
| 自动化测试浏览器 | Microsoft Edge版本 148.0.3967.83 |
三、测试用例
3.1登录界面测试用例

3.2主页面测试用例

四、手动功能测试系统
4.1登录页面
1.输入正确的用户名和密码
预期结果:登录成功


2.用户名为空和输入正确的密码
预期结果:登录失败,弹出警告“账号和密码不为空”

3.密码为空,输入正确的用户名
预期结果:登录失败,弹出警告“账号和密码不为空”

4.输入错误的用户名和密码
预期结果:登录失败,弹出警告“用户不存在”
4.2主页面
4.2.1首页
1.首页的昵称和登录的账号是否一致
预期结果:昵称和账号一致
2.点击“首页”按钮
预期结果:跳转到首页

3.点击博客列表的“查看全文”按钮
预期结果:打开文章

4.点击“写博客”按钮是否跳转到博客编辑页
预期结果:跳转到博客编辑页

5.点击“注销”按钮查看是否跳转到登录页面
预期结果:跳转到登录页面

4.2.2 博客详情页
1.查看是否存在博客标题
预期结果:存在博客标题
2.查看是否存在发布时间
预期结果:存在发布时间
3.查看是否存在博客的内容
预期结果:存在博客内容

4.查看是否成功返回首页
预期结果:成功返回首页

4.2.3博客编辑页
1.输入标题和内容,点击“发布”按钮
预期结果:发布成功


2.标题为空,正常输入内容,点击“发布”按钮
预期结果:弹出警告弹窗,发布失败


3.内容为空,正常输入标题,点击“发布”按钮
预期结果:发布失败


五、界面测试
图片正确显示、不遮挡关键信息、页面无错别字:

提示信息准确:



主页面图片正常显示、不遮挡关键信息、无错别字:



六、兼容性测试
6.1在Google Chrome浏览器打开
预期结果:正常打开,可以使用完整功能

6.2在Mircosoft Edge浏览器打开

6.3在vivo浏览器中打开

七、自动化测试
6.1创建utils.py文件,并在该文件中创建Driver类,用来存放自动化代码中的通用方法:
#创建驱动对象
import datetime
import os
import sys
from selenium import webdriver
from selenium.webdriver.edge.options import Options
from selenium.webdriver.edge.service import Service
class BlogDriver:
driver=None
#共享浏览器
@classmethod
def init_driver(cls):
if cls.driver is None:
# 写手动下载的驱动路径
edge_driver_path = r"D:\cxdownload\edgedriver_win64\msedgedriver.exe"
service = Service(edge_driver_path)
# 配置启动参数
options = Options()
# 解决跨域报错
options.add_argument("--remote-allow-origins=*")
# 创建浏览器对象
cls.driver = webdriver.Edge(service=service, options=options)
@classmethod
def getScreeShot(cls):
#创建屏幕截图
#图片文件名称:./2026-05-25-173456.png
#图片路径:../images/调用方法(这样可以快速判断是哪一个用例的截图)-2026-05-25/2026-05-25-173456.png
#图片路径:../images/LoginFailTest1-2026-05-25/2026-05-25-173456.png
dirname=datetime.datetime.now().strftime("%Y-%m-%d")
#判断dirname文件夹是否已经存在,若不存在则创建文件夹
#../ images /2026-05-25
if not os.path.exists("../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"
cls.driver.save_screenshot("../images/"+dirname+"/"+filename)
6.2登录页面测
import time
from common.utils import BlogDriver
from selenium.webdriver.common.by import By
#测试博客登录页面
class BlogLogin:
url=""
driver=""
def __init__(self):
self.url=r"http://49.235.61.184:19090/blog_login.html"
BlogDriver.init_driver()
self.driver=BlogDriver.driver
self.driver.get(self.url)
#成功登录的测试用例
def LoginSucTest(self):
self.driver.get(self.url)
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("zhangsan")
self.driver.find_element(By.CSS_SELECTOR,"#password").send_keys("123456")
self.driver.find_element(By.CSS_SELECTOR,"#submit").click()
#能够找到博客登录首页用户的昵称,说明登录成功,否则登录失败
time.sleep(2)
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")
# 添加屏幕截图
#BlogDriver.getScreeShot()
# 异常登录的测试用例
def LoginFailTest1(self):
self.driver.get(self.url)
#若连续多次的send_keys则会出现关键词拼接,而不是替换。若要替换需要先clear
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("zhangsan")
#错误的密码
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
# 添加屏幕截图
#BlogDriver.getScreeShot()
#是否登录失败
time.sleep(2)
alert=self.driver.switch_to.alert
alert.accept()
def LoginFailTest2(self):
self.driver.get(self.url)
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("zansa")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123456")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
# 添加屏幕截图
BlogDriver.getScreeShot()
# 是否登录失败
time.sleep(2)
alert = self.driver.switch_to.alert
alert.accept()
6.3博客列表页测试
from selenium.webdriver.common.by import By
from common.utils import BlogDriver
#博客首页测试用例
class BlogList:
url=""
driver=""
def __init__(self):
self.url = r"http://49.235.61.184:19090/blog_login.html"
BlogDriver.init_driver()
self.driver = BlogDriver.driver
#因为我的登录页面和博客详情页的url相同,所以并不下需要再次打开url
#测试首页(登录情况下)
def ListTestByLogin(self):
#测试标题是否存在
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(155) > div.title")
#测试博客内容是否存在
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(155) > div.date")
#个人信息-检查昵称是否存在
self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.left > div > h3")
# 测试按钮是否存在
self.driver.find_element(By.CSS_SELECTOR, "body > div.container > div.right > div:nth-child(155) > a").click()
# 添加屏幕截图
#BlogDriver.getScreeShot()
6.4博客详情页测试
import time
from selenium.webdriver.common.by import By
from common.utils import BlogDriver
#测试博客详情页
class BlogDetail:
url=""
driver=""
def __init__(self):
self.url = r"http://49.235.61.184:19090/blog_login.html"
BlogDriver.init_driver()
self.driver = BlogDriver.driver
#登录状态下的博客详情页的测试
def DetailTestByLogin(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")
time.sleep(2)
#检查内容
self.driver.find_element(By.CSS_SELECTOR,"#detail > p")
time.sleep(2)
self.driver.back()
time.sleep(2)
#屏幕截图
BlogDriver.getScreeShot()
6.5博客编辑页测试
import time
from selenium.webdriver.common.by import By
from common.utils import BlogDriver
#博客编辑页
class BlogEdit:
url=""
driver=""
def __init__(self):
self.url = r"http://49.235.61.184:19090/blog_login.html"
BlogDriver.init_driver()
self.driver = BlogDriver.driver
#正确发布博客(登录状态)
def EditSucTestByLogin(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, "#submit").click()
#点击完成之后出现页面的跳转,页面的跳转需要加载时间,可能会出现代码执行的速度比页面渲染的速度要快,导致元素查不到,英雌可以添加等待
#添加隐式等待和显示等待都可以,任选一个
#隐式等待:创建浏览器对象之后就可以加上,因为隐式等待的作用域在driver整个生命周期
#显示等待:可以作用在当前代码中
self.driver.refresh()
time.sleep(2)
actual=self.driver.find_element(By.CSS_SELECTOR,"body > div.container > div.right > div:nth-child(162) > div.title").text
assert actual=="嘻嘻"
# 添加屏幕截图
BlogDriver.getScreeShot()
6.6集成测试

所有的测试用例都在RunTest.py文件例运行:
from test import BlogLogin
from test import BlogList
from common.utils import BlogDriver
from test import BlogDetail
from test import BlogEdit
if __name__=="__main__":#这行代码代表着项目中程序的入口
BlogDriver.init_driver()
BlogLogin.BlogLogin().LoginFailTest1()
BlogLogin.BlogLogin().LoginSucTest()
#登录成功之后就可以调用博客首页测试首页的用例(登录状态)
BlogList.BlogList().ListTestByLogin()
#博客详情页的测试用例(登录状态)
BlogDetail.BlogDetail().DetailTestByLogin()
#博客编辑页的测试用例
BlogEdit.BlogEdit().EditSucTestByLogin()
#指定浏览器的退出
BlogDriver.driver.quit()
更多推荐

所有评论(0)