手把手教你从0到1搭建web ui自动化框架(python3+selenium3+pytest)

article/2025/10/18 21:32:22

-前期准备
-环境
-实战: 从0开始

前期准备
为更好的学习自动化框架搭建,你需要提前了解以下知识:
python基础知识
pytest单元测试框架
PO模式
selenium使用

环境
本次我们自动化环境为:
mac+python3+selenium3+pytest==6.2.4
(不管是win还是mac,网上环境安装教程很多,参考下安装即可)

-实战: 从0开始
接下来我们以这个系统的登陆页面作为demo,开始进行web UI框架搭建:
在这里插入图片描述
最开始,我们设计了一个test_login.py文件,里完成了登陆脚本的设计:

from selenium.webdriver.support.ui import WebDriverWaiturl = 'xx'class TestLogin():def setup(self):self.driver = webdriver.Chrome()self.driver.get(url)self.driver.maximize_window()def teardown(self):self.driver.close()#以下为login页面设计的case#case1:输入正确的用户名密码后页面跳转正常def test_is_null(self,name,password):self.driver.find_element(By.ID, 'user_name').send_keys(name)self.driver.find_element(By.ID, 'password').send_keys(password)self.driver.find_element(By.ID, 'submit-button').click()assert 'user/index' in self.driver.get_url(),'failed--用户名密码正确时登陆场景失败'print ('case pass')# case2:用户名/密码不匹配def test_not_match(self, name, password):pass

写了1,2个用例时我们觉得没什么,但是随着case数量的增到,我们意识到了问题的严重性:
1.不同的case明明是同一段代码,只是传参不一致,就需要重复写多次,即便复制/粘贴也累啊—》解决:参数化,实现数据分离–创建data层
2.系统中某个页面发生变化,我准备去修改下对应的页面,结果代码写的过于分散,同一个页面的数据分散到了不同py模块,每次都修改不全,严重影响后期维护成本–》解决:引用PO模式(page object)–创建page层
3.系统中存在公共模块(比如系统中存在一个上传下载功能),多个页面/多个case都要使用—》解决:创建一个公共模块(创建public层)
……
诸如此类的问题随着case不断增多的状况下会明显感觉得到,接下来我们就开始逐一解决:

参数化(data):
利用pytest框架提供的@pytest.mark.parametrize()来实现,代码及页面接口设计如下:
在这里插入图片描述
读取json文件的代码:

import os
import jsoncurrent_path = os.path.abspath(__file__)
path = os.path.dirname(current_path)def get_json_data(specifypath):try:parent_path = os.path.dirname(current_path)path = f"{parent_path}/data/{specifypath}"with open(path) as file:data = json.load(file)return dataexcept Exception as e:print (e)

用例层调用data改造后的代码:
在这里插入图片描述引用PO模式(page object):
po模式:
简单来说,就是以一个页面作为一个对象,把一个页面的内容写成一个.py文件;
这个页面对象中包含内容:当前页面的元素定位及操作的整合;
po模式中会引用一个basepage.py,这个文件里面一般包含的是driver相关的操作,比如:elements相关的改造,简单粗暴点理解:就是把self.driver.xx相关的内容都写到这里就行;其他页面都会继承basepage.py中的内容。

按照上面逻辑我们继续改造代码:
basepage.py:
在这里插入图片描述
login_page.py
在这里插入图片描述
我们看下case层怎么引用:
在这里插入图片描述public层:
在这里插入图片描述
比如我登陆页面需要用到public中的内容,直接在login_page.py文件中继承即可使用public中的所有方法:
在这里插入图片描述
/以上就完成的框架设计/
框架设计核心:分层思想、PO模式
自动化框架设计一般都是设计都分为:page层、testcase层、public层、data层、report层(分层都比较灵活的,不管怎么分都是换汤不换药)
给大家看下完整的框架结构:
在这里插入图片描述
运行所有的case都放在这个run.sh的shell脚本里,后期做jenkins集成也只需要跑这个脚本即可:

echo 'start----------------'
pip install -r requirements.txt
pwd
pytest 
echo 'end----------------'

关于report大家可以直接用pytest-html来实现,网上有很多教程参考;
后期做jenkins集成直接参考之前写的内容。
///done//


http://chatgpt.dhexx.cn/article/X9rplFoo.shtml

相关文章

自动化测试框架总结

目录 1. 单元测试框架 2. Web自动化测试框架 3. iOS自动化测试框架 4. Android自动化测试框架 1. 单元测试框架 几乎所有的主流语言,都会有其对应的单元测试框架,下面简单介绍一下python,java,C#三种语言的常见单元测试框架 1.1 Python python常见单元测试框架…

自动化框架到底是什么?

如今,随着敏捷和 DevOps 软件方法论的发展,以及企业寻求更快发布和高质量产品的需求,它需要比手动测试方法更快,更高效的软件测试方法。微型,小型和中型企业(SME)使其测试过程自动化变得越来越必…

UI 自动化框架对比2

1、pytest 在开始本文之前,我想跟大家澄清两个概念,一个是测试框架一个是测试工具。很多人容易把他们搞混了,测试框架是诸如 Unittest、Pytest、TestNG 这类,而测试工具指的则是 Selenium、Appium、Jmeter 这类。 测试框架的作…

APP自动化简单理解(在python中实现简单的app自动化框架)

一、app自动化环境搭建 1、安装jdk及配置jdk的环境变量 app底层是c语言,应用层是java,所以需要jdk 2、安装SDK,配置android SDK环境 3、安装模拟器 4、下载安装Appium工具 01、appium客户端 appium destop 服务器 02、命令行安装&…

UI自动化框架如何设计及搭建?

目录 UI自动化框架 自动化原则: 如何减少自动化维护成本? UI自动化框架优化方案:(在不增加维护成本前提下) UI自动化脚本可分为3种: 已经实现自动化的模块可以不做手工测试了吗? UI自动化…

接口自动化框架

接口自动化框架讲解 框架结构 接口测试框架的结构如下图所示: 接口测试框架的结构说明: - API用于封装被测系统的接口(用requests模块封装的请求方法) - TestCase将一个或多个接口封装成测试用例,并使用UnitTest管…

什么是自动化框架?

前言 无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“…

接口自动化框架搭建

1.自动化测试流程 -- 需求分析。需求文档,接口文档,抓包接口 -- 测试计划。通常包含项目的进度,是否自动化,优先级 -- 测试用例(是从手工测试提取出来的) -- 用例评审 -- 执行测试。(写代码…

2023最全自动化测试框架讲解,不会真不行!

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”…

【测试开发】几种常见的自动化测试框架

几种常见的自动化测试框架 在软件测试领域,自动化测试框架有很多,这里主要介绍几种常用的自动化测试框架。 1.pytest pytest 是 Python 的一种单元测试框架,与 Python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起…

【自动化框架】

自动化测试框架就是:为了对一个指定的系统做自动化测试而封装的一个半成品,自动化测试攻城狮可以调用这个半成品封装好的方法去实现一个指定系统的自动化测试。 根据驱动模式不同自动化测试框架分为四种模式: (1) 数据驱动框架 (2) 关键字…

常见的主流自动化测试框架,这5种能帮到你很多

今天我们要向大家介绍的是常见5种主流自动化测试框架,包括优缺点等内容,供大家参考学习。 1.ATF 自动化测试框架AutoTestFramework是B/S架构框架,可实现Selenium等多种自动化测试全流程、团队化管理的高级框架平台,通过集成自动化…

【自动化测试】自动化测试框架与工具

文章目录 1)什么是自动化测试框架?1.1 什么是框架?1.2 什么是自动化测试框架?1.2.1 优点:1.2.2 框架的基本组件1、需要配置文件管理:2、业务逻辑代码和测试脚本分离3、报告和日志文件输出4、自定义的库的封…

从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新

本自动化测试框架采用python unittest 的基础来搭建,采用PO模式、数据驱动的思想,通过selenium来实现WEB UI自动化,通过request来实现接口自动化。移动终端的自动化也可在该框架基础上去构建补充。 目录 总体框架PO模式、DDT数据驱动、关键字…

Linux必备的小技巧——查看历史操作和屏显信息

通常在linux查看历史操作信息,都是查看日志文件,Linux的日志文件一般都保存在/var/log文件夹下: 用如下命令即可查看: cat filename 查看日志,会打开整个文件,直接跑到最后面tac filena…

linux下安装CUDA和cudnn

linux下安装CUDA和cudnn 2、安装CUDA10.1 在CUDA官网选择系统对应的版本下载CUDA 我的系统是Ubuntu18.04 64位,我选择下载最新版本的CUDA10.1: 输入以下命令安装CUDA sudo sh cuda_10.1.105_418.39_linux.run 显卡驱动已在上面安装了,这里一…

Linux和其他操作系统的区别

前言 这是我听老师讲课做的笔记,考试要看的。 这是视频地址 作者:RodmaChen 关注我的csdn博客,更多Linux笔记知识还在更新 为什么用Liunx系统 Linux和windows的区别Linux和Unix操作系统的区别 Linux和windows的区别 1.免费与收费 Windows 平台: Window…

linux下如何查看驱动?(CH341)

文章目录 背景命令 背景 Linux下有时候我们在接上串口后,在/dev/下找不到ttyUSB*,这时我们需要查看下本机是否安装了相应的驱动。 命令 lsmod | grep ch341 如上图,便是表示目前pc中存在ch341驱动,无需重新安装。

linux怎么查询数据库端口,linux下怎么查看数据库端口

满意答案 ai_yuming 2017.08.26 采纳率:50% 等级:8 已帮助:759人 如何查看mysql 默认端口号和修改端口号 1. 登录mysql [root@test /]# mysql -u root -p Enter password: 2. 使用命令show global variables like port;查看端口号 mysql> show global variables like …

Linux的历史背景和基本指令

众所周知,Linux和大家所熟悉的Windows一样,也是一款操作系统,不同的更多是在于Windows是闭源的,而Linux是开源的。现代生活中的比如飞机的控制系统、银行的系统、手机的系统等等,都和Linux操作系统相关,所以…