UI自动化测试实战
补充:Selenium主要用于Web页面的自动化测试,它可以模拟用户的各种操作,如点击、输入、滚动等,来测试网页的功能。而Appium是一个开源的移动端自动化测试工具。
一、自动化测试实战章节
- 自动化测试流程
- 测试用例编写
- 项目自动化测试环境的搭建
- 自动化测试脚本的编写
- 生成报告
二、自动化测试流程
1、自动化测试满足的条件:
- 项目周期长
- 项目需要回归测试
- 回归测试的内容需求变更不能太频繁
2、流程
- 分析需求:分析是否需要自动化测试
- 挑选功能:核心功能和界面变动频繁的功能
- 设计测试用例
- 搭建环境
- 项目搭建
- 编写代码
- 执行测试用例
三、自动化测试用例编写原则
1、编写测试用例的原则:
- 自动化测试用例一般实现核心业务流程或重复率高的功能
- 自动化测试用例的选择一般以正向逻辑为主
- 自动化测试用例一般要回归原点,也就是项目首页(比如支付和取消订单,如果支付错误就可能导致取消订单错误,就无法判断那个页面出现bug)

2、核心业务流程:
- 登录-发布商品 (后台管理)
- 登录-查询商品-加入购物车(门户)
- 登录-搜索商品(app)
四、自动化测试环境搭建
1、工具环境
- python
- pycharm编码工具
- web端:浏览器、浏览器驱动程序、selenium
- app端:jdk、Andriod-SDK、appium
2、依赖包
- selenium
- Appium-Python-Client
- parameterized
- pytest
- pytest-ordering
- pytest-html
- pytest-rerunsfailures
- allure-pytest
3、工程目录初始化
- base:python包
- data:测试数据文件
- img
- log:日志文件
- page:python包
- report:HTML报告、文件夹
- script:python包
- config.py:全局配置文件
- pytest.ini:pytest配置文件
- utils.py:工具类
五、utils代码(驱动工具类+获取公共函数+读取json数据)
1、utils的作用
(1)驱动工具类
(2)判断元素是否存在的函数(全局使用)
- 公用获取元素信息的函数(执行完测试用例后,对获取结果的元素数据做断言)
- 公用根据文本判断元素是否存在的函数
- 数据驱动读取数据的函数
2、驱动工具类

2、公用函数
导包

查找元素,并输出元素文本

查找元素是否存在当前页面或者移动应用

3、读取json代码

六、初始化代码-pytest.ini

七、初始化代码-config.py

在base-ini.py文件中加入这段代码:

八、基类代码-base
1、base_page



九、page目录(page目录中的类都继承了base的类,可以直接调用base的类方法)
1、login_page.py(登录页面封装)

2、home_page(首页封装)

3、goods_page.py



十:script测试用例(script类中没有继承page目录的类方法,因此得通过实例化对象调用page的类方法)
1、test_login.py(执行登录测试用例并断言)



2、test_goods.py



十、后台管理系统用例

1、测试用例的脚本编写情况
手工操作断言--定义页面文件(一个操作页面一个py文件)--封装PO(类:代表页面的对象)--编写测试脚本--执行测试脚本
2、后台登录-PO封装
接口的测试用例:测试步骤,测试数据,预期结果
3、page(目录)-login_page(文件)

相关文章:
UI自动化测试实战
补充:Selenium主要用于Web页面的自动化测试,它可以模拟用户的各种操作,如点击、输入、滚动等,来测试网页的功能。而Appium是一个开源的移动端自动化测试工具。 一、自动化测试实战章节 自动化测试流程测试用例编写项目自动化测试…...
东方智者颜廷利:以哲学思想促进世界和谐与无私奉献
【本社讯】在全球化的今天,东方智慧与哲学思想正逐渐成为促进世界和谐与理解的重要力量。近日,祖籍齐鲁大地山东济南的东方智者颜廷利以其深邃的哲学思想和对人类社会的深刻洞察,引起了国际社会的广泛关注。 颜廷利,一位致力于哲学研究与实践的智者,他的思想跨越古今,融合了东…...
基于 springboot vue停车场管理系统 设计与实现
博主介绍:专注于Java(springboot ssm 等开发框架) vue .net php phython node.js uniapp 微信小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不…...
如何验证ssl私钥和证书是否匹配?
从证书(CRT)文件提取公钥 openssl x509 -in server.crt -pubkey -noout | openssl sha256从证书签名请求(CSR)文件提取公钥 openssl req -in server.csr -pubkey -noout | openssl sha256从私钥(KEY)文件…...
MongoDB的基本操作
🌷数据库准备 🎈Mongoshell 1.在指定目录下创建mongodb文件夹、其子文件log和data以及mongodb.log cd /home/ubuntu mkdir -p mongodb/data mkdir -p mongodb/log touch mongodb/log/mongodb.log 执行mongodb命令启动mongdb服务 mongod --dbpath /h…...
spring mvc后端实现过程
文章目录 一、Spring mvc1、controller1.1、LoginController011.2、LoginController 2、service2.1、LoginService2.1、LoginInimplements 3、dao3.1、LoginMapper3.1、LoginMapper.xml 4、实体类 一、Spring mvc 1、controller 控制器层、处理用户的请求和响应, …...
102005
import os os.environ["CUDA_VISIBLE_DEVICES"] "0" # 设定使用的 GPUimport tensorflow as tf from dataset import generate_data import numpy as np from model import enhancednet# 检查 TensorFlow 是否可以识别 GPU gpus tf.config.list_physica…...
Cisco ACI环境给Leaf配置OOB带外管理IP方法
可以通过GUI 或CLI进行配置 通过CLI更简单,和配置传统交换机差不多, ACI中共有3大组件 APIC 控制器 SPINE 核心 LEAF 接入 下面我们将3种角色的带外IP配置方法都列出来 1 APIC配置带外IP This example shows how to configure out-of-band managemen…...
免费送源码:Java+B/S+MySQL springboot电影推荐系统 计算机毕业设计原创定制
摘 要 随着互联网与移动互联网迅速普及,网络上的电影娱乐信息数量相当庞大,人们对获取感兴趣的电影娱乐信息的需求越来越大,个性化的电影推荐系统成为一个热门。然而电影信息的表示相当复杂,己有的相似度计算方法与推荐算法都各有优势&#…...
数据清洗(脚本)
使用脚本清洗数据时,可以根据具体的数据问题选择编程语言,如Shell、Python、SQL等。这里我以 Python(Pandas库) 和 SQL 为例,演示如何通过脚本进行数据清洗。 1. 使用 Python(Pandas库) 进行数…...
jmeter中发送post请求遇到的问题
用jmeter发送post请求,把请求参数放在Body Data处,参数都写得正确,但没想到结果每次都报错,直接响应结果乱七八糟,改成用Parameters,反而不乱报错了。 上图 请求里如下 另外一些请求也是这样 这个响应结果也是错误的…...
Java中使用protobuf
一、简介 Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化。 Protocol Buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol B…...
2020款Macbook Pro A2251无法充电无法开机定位及修复
问题背景 up主有一台2020年的Macbook Pro,带Touch Bar,16G512G,四核I5,型号A2251 应该是一周没充电了,之前还用的好好的,后来有一天出差想带上 打开没电,手头上有个小米的66W快充头,…...
Spring Cloud --- 引入Gateway网关
引入Gateway网关 介绍 Spring Cloud Gateway 组件的核心是一系列的过滤器,通过这些过滤器可以将客户端发送的请求转发(路由)到对应的微服务。 Spring Cloud Gateway 是加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点 IP 端口信息,从…...
ESP32-C3实现定时器的启停(Arduino IDE)
1概述 ESP32-C3微控制器有多个定时器,这些定时器可用于各种用途,包括计时、生成PWM信号、测量输入信号的频率等。以下是ESP32-C3上可用的定时器资源: 两个硬件定时器: 定时器0:这是一个通用定时器,通常用于…...
centos升级g++使其支持c++17
centos升级g使其支持c17 升级g的原因现象原因 升级g方法更新镜像源yum升级g版本 总结 升级g的原因 现象 编译最新版本的jsoncpp报一下错误 jsontest.h:87:37: error: ‘hexfloat’ is not a member of ‘std’oss << std::setprecision(16) << std::hexfloat &l…...
Pytest日志收集器配置
前言 在pytest框架中,日志记录(logging)是一个强大的功能,它允许我们在测试期间记录信息、警告、错误等,从而帮助调试和监控测试进度。 pytest与Python标准库中的logging模块完美集成,因此你可以很容易地在…...
Morris算法(大数据作业)
我只能说,概率证明真的好难啊!(;′⌒) 这也证明我的概率论真的学的很差劲,有时间一定要补补/(ㄒoㄒ)/~~ 算法不难证明难! 当一个数足够大时,能不能用更少的空间来近似表示这个整数n,于是&…...
TCP/IP协议 【三次握手】过程简要描述
当建立TCP连接时,三次握手的作用简要描述如下: 第一次握手(客户端向服务器发送SYN包):客户端发送SYN包给服务器,确认服务器是否在线并等待响应。 第二次握手(服务器向客户端发送SYNACK包&…...
docker 数据管理,数据持久化详解 二 数据卷容器
数据卷和数据卷容器核心区别 持久性对比 数据卷:当您直接在启动容器时指定了一个数据卷(例如,使用docker run -v /data),这个数据卷会自动创建,并且其内容会在容器停止或删除后继续存在。您可以随时通过Do…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
