基于Python+Pytest+Playwright的UI自动化测试框架

news/2024/7/8 2:21:10 标签: python, pytest, ui

文章目录

    • 一、框架介绍
    • 二、实现功能
    • 三、框架目录结构
    • 四、依赖库
    • 五、安装教程
    • 六、如何创建用例
      • 1. 修改配置文件 `config.settings.py`
      • 2.删除框架中的示例用例数据
      • 3. 编写测试用例
    • 七、运行自动化测试
      • 方式一:使用pipenv管理虚拟环境
        • 1. 激活已存在的虚拟环境
        • 2. 运行
      • 方式二:依赖包安装在本机
    • 八 、初始化项目可能遇到的问题
    • Playwright Documentation
    • pytest-playwright Documentation
    • 联系我

一、框架介绍

本框架是基于Python+Pytest+Playwright的UI自动化测试框架。

本框架要求使用者对playwright有一定的了解才能上手使用。

二、实现功能

  • 支持通过命令行指定浏览器,选择需要运行的浏览器。
  • 建立接口池,处理用例依赖数据
  • 支持通过命令行指定运行环境,实现环境一键切换,解决多环境相互影响问题。
  • 采用pageobject模式,管理页面元素以及操作,提高项目的代码重用性
  • 采用loguru管理日志,可以输出更为优雅,简洁的日志
  • 钉钉、企业微信通知: 支持多种通知场景,执行成功之后,可选择发送钉钉、或者企业微信、邮箱通知
  • 使用pipenv管理虚拟环境和依赖文件,可以使用pipenv install一键安装依赖包。

三、框架目录结构

# 框架目录结构
├────.auth/
├────.gitignore
├────config/  配置文件层,存放整个项目需要用到的配置项
│    ├────__init__.py
│    ├────allure_config/
│    │    ├────http_server.exe  生成的一个http服务,用于放在allure报告压缩包里面,在windows环境下不安装allure也能打开查看报告
│    │    ├────logo.svg   当前部门或者项目logo,用于替换allure报告里面的logo。注意:代码里面无替换,是手动在lib/allure里面替换的
│    │    └────双击打开Allure报告.bat    一个用于在windows环境下不安装allure也能打开查看报告bat文件
│    ├────global_vars.py   全局变量,用于保存测试过程中变量,方便调用
│    ├────path_config.py    项目路径配置文件,注意:目录名称更改,需要更改配置文件
│    └────settings.py    项目配置文件,用于保存一些配置数据
└────utils/   公共模块,将一些公共函数、方法以及通用操作进行封装
│    ├────__init__.py
│    ├────assertion_utils/   接口断言的处理
│    │    ├────__init__.py
│    │    ├────assert_control.py
│    │    └────assert_function.py
│    ├────base_utils/   playwright基类,包括UI和API
│    │    ├────__init__.py
│    │    ├────base_page.py   基类,定义项目所需的基础方法,对playwright一些常用的页面进行二次封装,提高项目的代码重用性
│    │    ├────base_request.py  基类,定义项目所需的基础方法,对playwright的接口进行二次封装
│    │    └────request_control.py 请求playwright的接口进行再次封装,包括请求前数据处理,请求时日志记录,请求后断言,数据提取
│    ├────data_utils/   处理数据的一些方法
│    │    ├────__init__.py
│    │    ├────data_handle.py
│    │    ├────eval_data_handle.py
│    │    ├────extract_data_handle.py
│    │    └────faker_handle.py
│    ├────database_utils/  数据库处理
│    │    ├────__init__.py
│    │    └────mysql_handle.py
│    ├────files_utils/  文件处理
│    │    ├────__init__.py
│    │    ├────files_handle.py
│    │    └────yaml_handle.py
│    ├────logger_utils/  日志处理
│    │    ├────__init__.py
│   

http://www.niftyadmin.cn/n/5536236.html

相关文章

Linux-Kafka 3.7.0 Kraft+SASL认证模式 集群安装与部署超详细

1.集群规划 一般模式下,元数据在 zookeeper 中,运行时动态选举 controller,由controller 进行 Kafka 集群管理。kraft 模式架构(实验性)下,不再依赖 zookeeper 集群,而是用三台 controller 节点…

Java的进程和线程

一Java的进程 二Java的线程 多线程 ◆如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为“多线程”。 ◆多个线程交替占用CPU资源,而非真正的并行执行。 ◆多线程好处。 ◆充分利用CPU的资源。 ◆简化编程模型。 ◆良好的用…

算法思想总结:优先级队列

一、最后一块石头的重量 . - 力扣(LeetCode) 我们每次都要快速找到前两个最大的石头进行抵消,这个时候用优先级队列(建大堆),不断取堆顶元素是最好的!每次删除堆顶元素后,可以自动调整&#xf…

Redis 的缓存淘汰策略

Redis 作为一个高性能的内存数据库,提供了多种缓存淘汰策略(也称为过期策略或驱逐策略),用于管理内存使用。当 Redis 达到其内存限制时,系统会根据配置的策略删除一些数据,以释放内存空间。以下是 Redis 支…

Web3 ETF的主要功能

Web3 ETF的主要功能可以概括为以下几点,Web3 ETF仍是一项新兴投资产品,其长期表现仍存在不确定性。投资者在投资Web3 ETF之前应仔细研究相关风险,并做好充分的风险评估。北京木奇移动技术有限公司,专业的软件外包开发公司&#xf…

Node.js 使用 gRPC:从定义到实现

1. 概述: gRPC(gRPC Remote Procedure Calls)是一个高性能、开源的远程过程调用(RPC)框架,由 Google 开发。它支持多种编程语言,旨在简化和优化分布式系统中的服务通信。 2. gRPC的优势&#…

C语言实现的冒泡排序算法的示例程序

冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小&…

Kotlin_作用域函数let/also/with/run/apply

文章目录 1.let2.also3.with4.run5.apply6.总结对比 1.let 仅当调用对象不为 null 时执行 name?.let {println("name: $it")it.fun1() // 不需要: 判空 或 ?.it.fun2()it.fun3() } // 最后一行为返回值2.also 跟 let 类似,但返回的是传入对象本身 v…