【wyTest自动化测试】快照校验模式的创新实践

news2024/11/15 15:24:36

本文将以遥遥领先【华为商城】web端自动化为例,进行测试脚本开发的讲解。仅用于教学指导使用,如有侵权,请联系我删除。

一、测试脚本结构

        按照教程惯例,开篇先展示一下测试脚本的标准结构模版: case_xx特性_xx001.py

class CaseTest:
    testAbout = """
***** 测试描述 *****


***** 预置条件 *****


***** 测试步骤 *****
"""

    def setup(self):
        """测试前置操作"""


    def testStep(self):
        """测试执行"""


    def teardown(self):
        """测试后置操作"""

二、编写测试脚本

  • 补充用例描述

  • 补充完整脚本模版的基本结构

  • 根据提示开始填充代码操作和检查

知识点1:

        所有操作一定是基于用户进行的,每个用户会被单独分配一个浏览器,同时,整个执行阶段,同一个用户是共用一个浏览器的,既保障了独立性,又不会滥用资源。

知识点2:

        page_open  是打开页面的函数

三、快照校验的使用

用法1:对整个page页面进行快照校验

        page_screenshot_diff

用法2:对指定元素区域进行快照校验

        find_element().screenshot_diff

四、源码

#!/usr/bin/env/python3
# coding=utf-8
from wyTest_testAuto.run.caseLocalRun import caseLocalRun  # 单机测试模式
from wyTest_testAuto.config.testAutoConfig import testAutoConfig  # 执行配置
from wyTest_testAuto.library.log.logout import logout  # 日志输出
from wyTest_testAuto.library.webFun import webFun  # web端测试


class CaseTest:
    testAbout = """
***** 测试描述 *****
打开华为商城首页

***** 预置条件 *****


***** 测试步骤 *****
【步骤1】A用户_打开华为商城首页
    【检查1.1】正确展示商城页面
"""

    def setup(self):
        """测试前置操作"""
        self.caseId = testAutoConfig.caseId()
        self.objLog = logout("")

        # 获取操作对象
        self.userSignA = "A用户"
        self.objWeb = webFun(self.userSignA)

    def testStep(self):
        """测试执行"""
        self.objLog.testStep("【步骤1】A用户_打开华为商城首页")
        self.objWeb.page_open("https://www.vmall.com/index.html")

        self.objLog.testCheck("【检查1.1】正确展示商城页面")
        self.objWeb.page_screenshot_diff("华为商城首页")
        # self.objWeb.find_element().screenshot_diff("华为商城首页")

    def teardown(self):
        """测试后置操作"""


if __name__ == '__main__':
    caseLocalRun(CaseTest())

五、执行测试脚本

六、分析测试报告

七、替换标准快照

八、重新执行一下

九、剔除快照中不参与校验的区域

十、最终成功的测试报告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1931821.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

挖矿宝藏之硬盘分区

目录 一、硬盘分区的相关知识 二、主分区、活动分区、扩展分区、逻辑盘和盘符 三、硬盘分区原因 1.减少硬盘空间的浪费 2.便于文件的分类管理 3.有利于病毒的防治 四、硬盘分区的原则 1.方便性 2.实用性 3.安全性 五、利用Diskpart进行分区 1.命令行工具Diskpart …

信创学习笔记(四),信创之数据库DB思维导图

创作不易 只因热爱!! 热衷分享,一起成长! “你的鼓励就是我努力付出的动力” 一. 信创学习回顾 1.信创内容 信创内容思维导图 2.信创之CPU芯片架构 信创之CPU芯片架构思维导图 3.信创之操作系统OS 信创之操作系统OS思维导图 二. 信创之国产数据库DB思维导图 …

# Redis 入门到精通(六)-- redis 事务

Redis 入门到精通(六)-- redis 事务 一、redis 事务–redis事务简介 1、Redis 执行指令过程中,多条连续执行的指令被干扰,打断,插队,就会造成结果偏差。 2、什么是 redis 事务? redis 事务&…

关于Ubuntu22.04中的Command ‘vim‘ not found, but can be installed with:

前言 在Ubuntu终端编辑文本内容时需要利用vim,但新安装的虚拟机中并未配置vim,本文记录了vim的安装过程。 打开终端后,在home目录中输入 vim test.txt但提示报错,提示我们没有找到vim,需要通过以下命令进行安装&…

探索Python应用领域|Python有多强大?高效又实用!

Python是一种广泛使用的解释型、高级的和通用的编程语言,它拥有动态类型系统和垃圾回收机制,能够自动管理内存的使用,并且其本身具有简洁性、易读性的特点以及拥有一个巨大而广泛的标准库,功能强大适合各种应用场景和项目开发的需…

AI基于大模型语言存在的网络安全风险

目的: 随着大语言模型(LLM)各领域的广泛应用,我们迫切需要了解其中潜在的风险和威胁,及时进行有效的防御。 申明: AI技术的普及正当的使用大模型技术带来的便利,切勿使用与非法用途&#xff…

GPU云服务器------2秒文生图

GPU云服务器------2秒文生图 GPU云服务器AIGC来也开通GPU服务配置安全组规则远程连接GPU云服务器配置nginx用户文生图开启AiaccTorch禁用AiaccTorch切换模型使用LoRA插件使用Controlnet插件 服务器监控实例释放 好消息!好消息!阿里云服务器ECS推出了GPU云…

SSH讲解(重点:CentOS7)

第一章:SSH服务 1.1 SSH是什么? SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令…

DP(5) | 完全背包 | Java | 卡码52, LeetCode 518, 377, 70 做题总结

完全背包 感觉越写越糊涂了&#xff0c;初始化怎么做的&#xff1f;递推公式怎么来的&#xff1f; 状态变量 初始化 f[0][0] 0代码 这里的 f[i][j] f[i][j-w[i]]&#xff0c;就是和0-1背包最大的不同 for(int i1; i<n; i) { //物品ifor(int j1; j<m; j) {if(j<w[…

Kotlin中Unit、Any和Nothing

Unit Unit是一个特殊的类型&#xff0c;它表示“没有意义的值”的单元类型。在Kotlin中&#xff0c;当你不需要函数返回任何具体值时&#xff0c;可以使用Unit类型。 和Java 中 void一样。 Any 所有非空类的父类 Any?所有类的父类 类似Java中Object Nothing 表示一个函数或…

python的日期和时间

时间与日期 基础知识&#xff08;python的时间表示方法&#xff09; 时间戳 时间戳是一个用于表示特定时间点的方式&#xff0c;它表示自1970年1月1日00:00:00 UTC&#xff08;协调世界时&#xff09;以来经过的秒数。时间戳通常用于编程中&#xff0c;因为它提供了一种简单的方…

运维-Docker-黑马

运维-Docker-黑马 编辑时间&#xff1a;2024/7/15 来源&#xff1a;黑马程序员 docker&#xff1a;快速构建&#xff0c;运行&#xff0c;管理应用的工具 Docker安装 部署mysql 命令解读

【JavaScript 算法】贪心算法:局部最优解的构建

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、贪心算法的基本概念贪心算法的适用场景 二、经典问题及其 JavaScript 实现1. 零钱兑换问题2. 活动选择问题3. 分配问题 三、贪心算法的应用四、总结 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种逐步构建解…

ReAct 大模型提示框架

你可能不熟悉 ReAct&#xff0c;这是一个旨在增强语言模型 (LLM) 决策能力的尖端框架。 通过使用新的观察结果更新 LLM 的上下文窗口并提示其重新评估信息&#xff0c;ReAct 促进了类似于人类思维过程的推理水平&#xff0c;超越了诸如思维链提示之类的旧技术。 在本文中&…

RocketMQ~架构与工作流程了解

简介 RocketMQ 具有高性能、高可靠、高实时、分布式 的特点。它是一个采用 Java 语言开发的分布式的消息系统&#xff0c;由阿里巴巴团队开发&#xff0c;在 2016 年底贡献给 Apache&#xff0c;成为了 Apache 的一个顶级项目。 在阿里内部&#xff0c;RocketMQ 很好地服务了集…

C++笔试强训4

文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 %o就是输出八进制的无符号数&#xff0c;0123&#xff0c;&#xff0c;以0开头&#xff0c;本来就是八进制&#xff0c;所以输出为123&#xff0c;123是十进制&#xff0c;转化为八进制就是173. 故选…

Python实现基于http通信的protobuf数据传输的案例,包括请求者和接收者

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

tensorflow1基础函数学习

学习准备&#xff1a; 所需的库&#xff1a; tensorflow 1.12.0 numpy 1.19.5基本初始化函数 1.1 理解张量 tensor&#xff1a; 多维数组&#xff08;列表&#xff09;&#xff0c; 阶&#xff1a;张量的维数 维数名字栗子0标量s 1, 2, 31向量v [1, 2, 3]2矩阵m [[1, …

uniapp 微信默认地图选点功能实现

效果图 配置项 微信公众平台-小程序配置 uniapp配置 上代码 <template><view class"content"><button click"toMap">请选择位置</button></view> </template><script setup lang"ts">function toMa…