【自动化测试实战篇】Web自动化测试实战:从用例编写到报告生成

🔥艾莉丝努力练剑:个人主页

专栏传送门:《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有所帮助,不要忘记给博主"一键四连"哦!

🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡

૮₍ ˶ ˊ ᴥ ˋ˶₎ა

相关推荐
羑悻的小杀马特12 分钟前
把随身WiFi改成网盘聚合器:中兴F50挂载本地存储+夸克网盘实战
运维·服务器·人工智能·网盘·openlist
meilindehuzi_a20 分钟前
从跑分到生产力:重新理解大模型基准测试与分层协作
人工智能
蜜桃味女焊匠人1 小时前
焊接生产线优化思路:解决手工焊、机器人焊气体浪费问题
人工智能·经验分享·其他·机器人
Georgeviewer6 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
GuWenyue7 小时前
分不清AI Workflow与Agent?3个实战案例彻底讲透,做AI应用不再踩选型坑
人工智能
彩讯股份3006347 小时前
彩讯股份与心洲科技签署战略合作协议,共建企业级模型后训练能力
人工智能·科技
Scott9999HH7 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
迅易科技7 小时前
从场景验证到Agent上线:迅易 × WorkBuddy如何帮助企业建设AI能力?
人工智能·ai·腾讯云
PNP Robotics8 小时前
多伦多大学机器人峰会|物理AI与具身智能落地新趋势
人工智能·深度学习·机器学习·机器人
不好听6138 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端