
🔥艾莉丝努力练剑:个人主页
❄专栏传送门:《C语言》、《数据结构与算法》、C/C++干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法:从基础到进阶、测试开发要点全知道
⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平
🎬艾莉丝的简介:

🎬艾莉丝的测试开发博客简介:
****************
************

前情提示
本文就以博客系统为例,基于web项目进行一下完整的实战吧!

目录
[1 ~> 自动化实施步骤](#1 ~> 自动化实施步骤)
[1.1 编写web测试用例](#1.1 编写web测试用例)
[1.2 自动化测试脚本开发](#1.2 自动化测试脚本开发)
[common / Utils.py](#common / Utils.py)
[cases / BlogLogin.py](#cases / BlogLogin.py)
[cases / BlogList.py](#cases / BlogList.py)
[cases / BlogDetail.py](#cases / BlogDetail.py)
[cases / RunCases.py](#cases / RunCases.py)
[1.3 将自动化测试补充至测试报告](#1.3 将自动化测试补充至测试报告)
1 ~> 自动化实施步骤
1.1 编写web测试用例
这里画测试用例的软件,博主推荐用Xmind------

简单给大家展示一下博客系统UI自动化测试用例的测试用例编写------

1.2 自动化测试脚本开发
common / Utils.py
python
#创建驱动对象
import datetime
import os.path
import sys
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
class Driver:
driver = ""
def __init__(self):
options = webdriver.ChromeOptions()
# options.page_load_strategy = 'eager'
self.driver =
webdriver.Chrome(service=Service(ChromeDriverManager().install()),options=options)
def getScreenShot(self):
dirname = datetime.datetime.now().strftime('%Y-%m-%d')
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"
self.driver.save_screenshot(f'../images/{dirname}/' + filename)
BlogDriver = Driver()
cases / BlogLogin.py
python
import time
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogLogin:
url = ""
driver = ""
def __init__(self):
self.url = "http://192.168.47.135:8653/blog_system/blog_login.html"
self.driver = BlogDriver.driver
self.driver.get(self.url)
def loginSucTest(self):
time.sleep(2)
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("admin")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("123")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
# 对登录结果进⾏检测, 如果跳转到了博客列表⻚才算是登录成功了
self.driver.find_element(By.CSS_SELECTOR, "body > div.container >
div.left > div > img")
BlogDriver.getScreenShot()
self.driver.back()
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("admin")
self.driver.find_element(By.CSS_SELECTOR, "#password").send_keys("111")
self.driver.find_element(By.CSS_SELECTOR, "#submit").click()
# 等登录失败的结果进⾏检测, 不能仅仅通过body来校验结果,因为登录成功的结果⻚也有body元素
expect = "⽤⼾名或密码错误!"
actual = self.driver.find_element(By.CSS_SELECTOR, "body").text
print(actual)
BlogDriver.getScreenShot()
assert expect == actual
self.driver.back()
cases / BlogList.py
python
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogList:
url = ""
driver = ""
def __init__(self):
self.driver = BlogDriver.driver
self.url = "http://192.168.47.135:8653/blog_system/blog_list.html"
self.driver.get(self.url)
# 前提:登陆状态下才能进⼊到列表⻚
def ListTest(self):
self.driver.find_element(By.CSS_SELECTOR, "body > div.container >
div.left > div > img")
self.driver.find_element(By.CSS_SELECTOR, "body > div.container >
div.right > div:nth-child(1) > a")
articles = self.driver.find_elements(By.CSS_SELECTOR, "body >
div.container > div.right > div")
assert len(articles) > 10
#点击⽂章
self.driver.find_element(By.CSS_SELECTOR,"body > div.container >
div.right > div:nth-child(1) > a").click()
title = self.driver.title
assert title == "博客详情⻚"
BlogDriver.getScreenShot()
cases / BlogDetail.py
python
from selenium.webdriver.common.by import By
from common.Utils import BlogDriver
class BlogDetail:
url = " "
driver = ""
def __init__(self):
self.url = "http://192.168.47.135:8653/blog_system/blog_detail.html?
blogId=15"
self.driver = BlogDriver.driver
title = self.driver.title
#列表⻚已经跳过来了,⽆需再指定url跳转
if not title=="博客列表⻚":
self.driver.get(self.url)
def DetailCheck(self):
#body > div.container > div.right > div:nth-child(1) > a
BlogDriver.getScreenShot()
self.driver.find_element(By.CSS_SELECTOR,"body > div.container >
div.right > div > h3")
self.driver.find_element(By.CSS_SELECTOR,"body > div.container >
div.right > div > div.date")
self.driver.find_element(By.CSS_SELECTOR,"#content")
cases / RunCases.py
python
from common.Utils import BlogDriver
from tests import BlogLogin
from tests import BlogList
from tests import BlogDetail
if __name__ == "__main__":
BlogLogin.BlogLogin().loginSucTest()
BlogList.BlogList().ListTest()
BlogDetail.BlogDetail().DetailCheck()
BlogDriver.driver.quit()
1.3 将自动化测试补充至测试报告
测试报告模板:

结尾
本文的内容到这里就全部结束了,感谢您的阅读!
往期回顾:
【自动化测试函数 (下)】Web自动化攻坚:应对加载等待、浏览器导航与无头模式的自动化脚本艺术
结语: 本期我们学习了测试开发/测试内容中的自动化测试常用函数篇,希望对学习测试开发/测试相关内容的uu有所帮助,不要忘记给博主"一键四连"哦!
🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡
૮₍ ˶ ˊ ᴥ ˋ˶₎ა
