当前位置: 首页 > news >正文

自动化框架如何搭建?让10年阿里自动化测试老司机帮你搞定!自动化测试脚本怎么写?

一、何为框架?何为自动化测试框架?

无论是日常技术交流,还是在自动化测试实践中,经常会听到一个词叫:框架。之前对“框架”这个词知其然不知其所以然。现在看过一些资料以及加上我自己的一些实践有了我自己的一些看法。

那么:什么是框架?

在自动化实践过程中,框架就是一个半成品,框架是指对应用系统的部分设计或实现系统的部分结构。

举个栗子:selenium是不是一个框架?Yes,它是一个框架,那么这个框架能不能对一个指定的系统比如淘宝做自动化测试?答案是不能的,我们还必须使用这个框架封装好的方法去实现淘宝的业务逻辑。所以说框架就是封装好的一个半成品。

那么:什么是自动化测试框架?

自动化测试框架就是:为了对一个指定的系统做自动化测试而封装的一个半成品,自动化测试攻城狮可以调用这个半成品封装好的方法去实现一个指定系统的自动化测试!

还是不明白?没关系,下面一张图道破玄机!下面这个照片框架请问是不是一个半成品?不是一个完整的照片?但是它又是整个照片的一部分!

 

二、根据驱动模式不同自动化测试框架分为四种模式。

(1) 数据驱动框架

(2) 关键字驱动框架

(3) 数据驱动+关键字驱动混合型驱动框架

(4) 行为驱动(lettuce)测试框架

三、自动化测试框架如何实现(数据驱动框架)

1.自动化测试框架最核心的是分层模式和封装:

分层模式:一般的情况下,自动化测试框架都会分三层:BasePage基础页封装层,PO模型层,TestCase测试用例层。这三层的关系为:TestCase测试用例层调用PO模型层的元素定位和元素操作,PO模型层调用BasePage基础页封装层。如下图:

 

除了以上框架核心三层外还包括:日志处理模块,ini配置文件处理模块,数据驱动模块,jenkins持续集成模块等。

2.自动化测试框架代码结构,如下图:

 

其中:

base文件夹为BagePage封装层。此文件夹下有基础方法封装base.py和基础单元测试封装base_unit.py。

common为公共的方法封装层。此文件夹下有配置文件工具:config_util.py,Excel读写工具:excel_util.py,日志处理:logger_util.py文件。

 

data为excel数据文件。都是数据文件

 

log为生成的日志文件。

pageobject为PO模型层。

report为生成的测试报告文件夹

testcase为测试用例层。

all.py为总执行文件。

import HTMLTestRunner
import unittest
from common.config_util import get_project_path, get_configif __name__ == '__main__':test_dir = get_project_path()+"testcase"dis=unittest.defaultTestLoader.discover(test_dir,pattern="*.py")#now = time.strftime("%Y-%m-%d-%H_%M_%S",time.localtime(time.time()))#filepath = get_project_path()+"/report/"+get_config("reportSet","reportFileName")+now+".html"filepath = get_project_path()+"/report/report.html"fp = open(filepath,"wb")runner=HTMLTestRunner.HTMLTestRunner(stream=fp,title="携程网自动化测试报告",description="报告详情如下")runner.run(dis)fp.close()

config.ini为全局配置文件。 

#浏览器选择(不区分大小写,谷歌:Chrome;火狐:Firefox;IE:Ie;)
[Browser]
browserName = Chrome#被测项目地址设置
[testUrl]
url=https://trains.ctrip.com/TrainBooking/SearchTrain.aspx####框架日志设置
#(分别为日志文件前缀,文件日志级别,文件日志格式,控制台日志级别,控制台日志格式)日志级别共五级(不区分大小写,默认为INFO):DEBUG,INFO,WARNING,ERROR,CRITICAL
[logSet]
LogFileName = log_
fileLogLevel = INFO
fileLogFormatter = [%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s] %(message)s
consoleLogLevel = INFO
consoleLogFormatter = [%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s] %(message)s#框架报告设置(报告文件名称设置)
[reportSet]
reportFileName = report_

四、当前自动化框架和市面上不同类型的对比。

1、当前框架使用的是三层框架:

第1层、base文件夹是基础封装层,

第2层、pageobject是页面封装层(包括元素定位和动作),

第3层、测试用例层。其中第2层继承第1层的基础层,第3层调用第2层的动作。

2、其他不同的框架类型

(1)将第2层中的元素定位写入ini配置文件中。然后读取。

(2)分四层:把第2层分解成两层,分别是元素定位层、动作层。

 

 

五、总结

每个公司,每个自动测试工程师封装的自动化框架都不一样,没有一成不变的自动化测试框架,也没有最好的自动化测试框架,只有最合适的自动化测试框架,最终总结出:

如果你想想对自动化测试框架有更深层次的理解,我推荐你看一下这套Python全套自动化测试的视频,还有配套的笔记

B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)

 

相关文章:

自动化框架如何搭建?让10年阿里自动化测试老司机帮你搞定!自动化测试脚本怎么写?

一、何为框架?何为自动化测试框架? 无论是日常技术交流,还是在自动化测试实践中,经常会听到一个词叫:框架。之前对“框架”这个词知其然不知其所以然。现在看过一些资料以及加上我自己的一些实践有了我自己的一些看法…...

剑指 Offer 15. 二进制中1的个数

剑指 Offer 15. 二进制中1的个数 难度:easy\color{Green}{easy}easy 题目描述 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).…...

CHAPTER 3 磁盘管理

磁盘管理1 磁盘管理1.1 块设备信息(lsblk)1.2 挂载硬盘1.2.1 挂载单个硬盘(mkfs、mount)1.2.2 磁盘分区工具(fdisk)1.2.3 创建分区1.2.4 相关命令1. df2. partprobe3. mkfs1.3 逻辑卷管理器(LVM)1. 涉及概念2. 使用LVM流程1.4 磁盘检测及修复(fsck)1 磁盘…...

MS python学习(7)

Managing Keys - dotenv Managing keys usage of .env module 项目地址:https://github.com/theskumar/python-dotenv Reads the key,value pair from .env and adds them to environment variable. 将key明文(hard code)形式写在script里…...

工业物联网“杀手级”应用—预测性维护

一、预测性维护的必要性 随着新一轮科技革命和产业变革的兴起,工业物联网、大数据、人工智能等技术正与经济社会各领域加速渗透融合。由于市场竞争对精细化成本管控的要求,设备的重要性越来越凸显,设备的维护对策也必然从响应式维护&#xf…...

Java代码弱点与修复之——Explicit null dereferenced(显式空间接引用)

弱点描述 Explicit null dereferenced, 显示空间接引用。是 Coverity 静态代码分析工具检测到的一种中风险缺陷。这种缺陷通常发生在尝试使用空指针引用调用对象上的方法或访问属性时。 Explicit null dereferenced的缺陷可能会导致程序崩溃或产生不可预测的结果。 在Java语…...

一元导数与多元求导数总结

前序:文章结构 1.一元导数 ①一般函数求导 因为太简单的原因,事实上一般函数求导不会单独出现,大多数都是出现在各种特殊的求导过程中。只要掌握16个基本求导公式没问题。 ②复合函数求导(主要链式法则) 这种一般是…...

通过堆栈分析深拷贝、浅拷贝、赋值的差异

前言数据类型分为:基本数据类型String、Number、Boolean、Null、Undefined、Symbol对象数据类型Object、Array基本数据类型的特点:直接存储在栈(stack)中的数据引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内…...

网络割接概述

网络割接概述割接背景企业网络的变化割接概述割接难点割接的操作流程情景模拟及解决方案常见的割接场景割接背景 随着企业业务的不断发展,企业网络为了适应业务的需求不断的改造和优化。无论是硬件的扩容、软件的升级、配置的变更,凡是影响现网运行业务…...

开放开源开先河(下)

目录 1.唯一性定义品牌 2.打造爆款塑造品牌 3.生态系统传播品牌 打造爆款塑造品牌 目前全球100多个开源基金会大部分都在美国,已成功孵化了800多个项目。而开放原子开源基金会现有136家捐赠单位,2020年9月,百度将区块链项目超级链&#xff0…...

maven的学习

为啥要用maven 1、不用认为添加jar包所依赖的其他jar包 2、能在本地仓库只保留一份jar包,避免了多个工程使用相同jar包,需要重复导入的问题,减少冗余 3、能够规范添加jar包,在下载需要的jar包时有多种方法,但是不能保…...

从前端到后端全面解析文件上传

从前端到后端全面解析文件上传1.前端准备(vueelement-ui)2.后端准备(SpringBootminiomysql)2.1解决跨域2.2配置minio与mysql2.3controller层2.4service层1.前端准备(vueelement-ui) <!DOCTYPE html> <html lang"en"> <head><meta charset"…...

全网火爆,软件测试面试题大全,接口测试题+回答 (18k+的offer)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 面试测试工程师的时…...

【iOS】—— 浅看block源码

block 文章目录block如何通过终端clang生成源码cpp文件block实质截获自动变量全局变量和静态变量的截获__block说明符iOS开发“强弱共舞”——weak和strong配套使用解决block循环引用问题如何通过终端clang生成源码cpp文件 之前在学习block中学习的比较浅&#xff0c;只看了oc…...

I.MX6ULL_Linux_系统篇(23) busybox文件系统构建

Linux“三巨头”已经完成了 2 个了&#xff0c;就剩最后一个 rootfs(根文件系统)了&#xff0c;本章我们就来学习一下根文件系统的组成以及如何构建根文件系统。这是 Linux 移植的最后一步&#xff0c;根文件系统构建好以后就意味着我们已经拥有了一个完整的、可以运行的最小系…...

shpjs将.zip文件转成geoJson

一、npm install shpjs二、import shp from shpjs三、async setLayerSource() {const geoJsonData await shp(dataUrl)}一直报错&#xff1a;是因为Buffer这个插件一直没找到Uncaught Error: nodebuffer is not supported by this browser解决办法npm install node-polyfill-w…...

eBay是不是一定要养号?是的

相信每个运营过eBay的用户遇到过这个棘手的问题&#xff0c;eBay个人账户的刊登数量是有限的&#xff0c;尤其是新账户只有5个sku&#xff0c;所以一开始的运营会比较艰难。想要快点走上正轨的话&#xff0c;就一定要去注重这个“养号”。eBay运营模式 1.拍卖 eBay最开始是一个…...

宝塔(二):升级JDK版本

目录 背景 一、下载JDK17 二、配置环境变量 三、配置新的JDK路径 背景 宝塔的软件商店只有JDK8&#xff0c;不满足我当前项目所需的JDK版本&#xff0c;因此想对JDK版本进行升级&#xff0c;升级为JDK17。 一、下载JDK17 先进入 /usr/lib/jvm 目录 点击终端&#xff0c;进…...

【LeetCode】螺旋矩阵 [M](数组)

54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,…...

实验二:动态规划

1.双11的红包雨 问题描述 双11到了&#xff0c;据说这2天会下红包雨&#xff0c;每个红包有不同的价值&#xff0c;小k好开心&#xff0c;但有个规则&#xff0c;就只能接掉落在他身旁的10米范围内的红包&#xff08;0-10这11个位置&#xff09;。小k想尽可能的多抢红包&…...

【AI视频从0到1系统课】导师全程陪跑、课程持续更新、适合零基础!

在 AI 视频工具日益同质化的当下&#xff0c;课程的核心竞争力已从“教你用什么工具”转向“如何帮你拿到结果”。面对“2026 全新升级”与“陪伴式教育”这类宣传语&#xff0c;阅读的关键在于验证其服务颗粒度与学习转化率。 一、 解构“陪伴式教育”&#xff1a;关注反馈机制…...

接地系统安装怎么做才靠谱?从施工流程、质量验收到常见误区

在建筑电气、工业厂房、机电安装、弱电机房、消防系统和防雷系统中&#xff0c;接地系统安装都是绕不开的基础工作。它不像配电柜、桥架、灯具那样“看得见、拍得出”&#xff0c;但它一旦做不好&#xff0c;轻则设备故障、信号干扰、漏电保护误动作&#xff0c;重则引发触电风…...

技术小白也能懂:拆解一个chinahrt自动刷课油猴脚本的代码逻辑与实现原理

技术小白也能懂&#xff1a;拆解一个自动刷课油猴脚本的代码逻辑与实现原理 在数字化学习时代&#xff0c;许多在线教育平台要求用户完成指定课程才能获得相应证书或学分。对于时间紧张的学习者来说&#xff0c;手动完成所有课程视频观看可能成为负担。本文将从一个具体案例出…...

基于深度学习的桥梁健康状态监测与预警系统设计与实现

基于深度学习的桥梁健康状态监测与预警系统设计与实现 1. 系统总体架构 本系统采用 B/S 架构,由数据采集层、数据处理层、深度学习模型层、Web后端层及前端可视化层组成。 后端框架:Django (负责ORM、API、用户认证) 深度学习:TensorFlow 2.x / Keras (构建LSTM-Autoencod…...

低成本DIY智能小车核心模块:用STM32和TB6612实现带编码器的定速巡航功能

低成本DIY智能小车核心模块&#xff1a;用STM32和TB6612实现带编码器的定速巡航功能 周末在工作室调试新做的智能小车时&#xff0c;突然意识到一个有趣的现象&#xff1a;当我们给电机设定固定转速后&#xff0c;实际速度总会因为电池电压波动、负载变化等因素产生偏差。这让…...

payload缺了2个

soc和mcu收发验证中。其他block里面都有&#xff0c;只缺了2个。每个block里都是一样的rte的read和write那么问题在底软&#xff0c;不在我们ap/cp。如图&#xff0c;id6和9这里缺了。底软更新后有了&#xff1a;代码里面每个都一样的&#xff0c;问题不在这里&#xff1a;FUNC…...

Ubuntu 20.04安装MATLAB R2023B保姆级避坑指南:从卸载旧版到选对产品,一步一截图

Ubuntu 20.04安装MATLAB R2023B全流程实战&#xff1a;从彻底卸载到精准选配 在科研与工程计算领域&#xff0c;MATLAB始终保持着不可替代的地位。当最新版的R2023B遇上Ubuntu 20.04这个长期支持版本&#xff0c;如何实现完美部署却让不少用户望而却步。不同于Windows下的图形化…...

PROJECT MOGFACE系统重装辅助工具:Win10镜像下载与自动化安装配置

PROJECT MOGFACE系统重装辅助工具&#xff1a;Win10镜像下载与自动化安装配置 每次重装系统&#xff0c;你是不是都觉得头大&#xff1f;找官方镜像怕下到带病毒的&#xff0c;制作启动盘步骤繁琐&#xff0c;安装过程还得守在电脑前点下一步&#xff0c;装完系统还得手动装驱…...

Ollama镜像免配置原理:daily_stock_analysis启动脚本中systemd服务注册与健康检查逻辑

Ollama镜像免配置原理&#xff1a;daily_stock_analysis启动脚本中systemd服务注册与健康检查逻辑 1. 项目背景与核心价值 在当今AI技术快速发展的时代&#xff0c;本地化部署大模型成为了许多企业和开发者的迫切需求。daily_stock_analysis镜像正是基于这一需求&#xff0c;…...

从Python调包侠到量化研究员:我的3年转型踩坑实录与学习路线图

从Python调包侠到量化研究员&#xff1a;我的3年转型踩坑实录与学习路线图 三年前&#xff0c;我还是一名只会用Python调包的数据工程师&#xff0c;每天的工作就是清洗数据、跑模型、生成报表。直到某次聚会上&#xff0c;一位在私募基金做量化的朋友随口提了句"我们组去…...