自动化工具 pytest 内核测试平台落地初体验

news/2024/11/8 3:00:12/

测试平台,有人说它鸡肋,有人说它有用,有人说它轮子,众说纷纭,不如从自身出发,考虑是否要做测试平台:

第 1 阶段,用 Python+requests 写接口自动化。
第 2 阶段,选择 unitttest 或 pytest,更熟悉 pytest 选了 pytest。
第 3 阶段,快速搭建 pytest 项目脚手架,封装 tep 测试工具。
第 4 阶段,通过 Git 管理测试脚本,多分支合并代码。
第 5 阶段,去除本地环境同步麻烦,方便团队共享脚本。
需要有个测试平台。

使用篇

环境变量

环境变量是字符串键值对,全局作用域。比如不同环境不同域名:

 使用:env_vars.name

fixtures

fixtures 即 pytest 的 fixture,可以添加自定义函数,供测试用例使用。比如封装登录接口返回 token:

 

 测试用例

在前端网页写代码,1 条用例对应 1 个 pytest 的test_name.py文件。比如调用login fixture 登录:

 本地编写

PyCharm 写代码体验更好,正确姿势是从平台下载包含环境变量和 fixtures 等项目结构代码,本地编写用例,调试,跑通后,粘贴到平台上共享和维护:

 

扩展能力

用例是 Python 代码,理论上所有 Python 能写出来的,平台都能支持,比如 HTTP、WebSocket、Protobuf 等协议。

原理篇

pytest 内核

vue2-ace-editor作为前端代码编辑组件。
前端把代码通过 HTTP 请求传给后端。
后端把代码存入 MySQL 数据库。
运行用例,从数据库取出代码,生成 pytest 文件。
Shell 命令调用pytest -s test_name.py,执行测试。
后端把运行结果日志返给前端展示。
之所以要折腾数据库,是因为每次部署后 docker 容器里面的文件会被清掉,只能动态生成。

tep 脚手架
测试平台功能是从 tep 项目脚手架中抽取出来的:

  • fixture_env_vars.py做成了环境变量功能。
  • fixture_login.py等做成了fixtures功能。
  • tests做成了测试用例功能。

运行用例

整体流程如下:

 

ep startproject project_name

运行用例时,判断项目目录是否存在,如果不存在就调用tep startproject project_name创建项目脚手架。

更新 conf.yaml 中 env

把前端传的当前运行环境更新到conf.yaml文件中:

动态生成或更新 fixture_env_vars.py 文件

根据环境变量功能模块的数据,动态生成fixture_env_vars.py文件:

动态生成或更新 fixtures 目录下所有文件

根据fixtures功能模块的数据,动态生成fixture_login.py等所有文件:

 

动态生成或更新 tests 某个 test_文件

从数据库拿到用例代码,动态生成test_文件。

Shell 执行 pytest 命令

从上一步拿到case_path,调用pytest -s case_path执行测试。

计划后续添加 suite 和 marker 两种批量执行用例方式。

【资源分享】 
下面这份资源,对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望也能帮助到你!

 

 


http://www.ppmy.cn/news/40582.html

相关文章

Excel技能之数据安全,老板让我加个锁

金融、管理、财务各个领域和行业,重要的数据,没有保护手段,像在大街上裸奔一样。数据安全的重要性,必须刻在骨子里。 机密文件、商业文件、财务报表、销售业绩、工资,以及不想让别人修改的只读文件,都可以…

vue 高德地图设置鼠标样式

高德地图JS API 2.0 设置鼠标样式在线示例 首先&#xff0c;在 index.html 中引入图标&#xff1a; <link rel"stylesheet" href"https://at.alicdn.com/t/font_873139_0v65kqy674.css" >封装工具文件 utils/map.js &#xff1a; export default …

2023最新MYSQL面试题总结

​ MYSQL 简介&#xff1a; MySQL数据库是一种开源的关系型数据库管理系统&#xff0c;它支持多用户、多线程、多个存储引擎&#xff0c;可以在各种操作系统上运行。MySQL的优点包括开源免费、性能高、稳定可靠、支持多种操作系统和编程语言、易于使用和管理等。MySQL的缺点包…

C++ 不常用的奇淫巧计

leetcode-剑指offerII 071.按权重生成随机数 给定一个正整数数组 w &#xff0c;其中 w[i] 代表下标 i 的权重&#xff08;下标从 0 开始&#xff09;&#xff0c;请写一个函数 pickIndex &#xff0c;它可以随机地获取下标 i&#xff0c;选取下标 i 的概率与 w[i] 成正比。 …

跨越DDD从理论到工程落地的鸿沟

DDD作为一种优秀的设计思想&#xff0c;的确为复杂业务治理带来了曙光。然而因为DDD本身难以掌握&#xff0c;很容易造成DDD从理论到工程落地之间出现巨大的鸿沟。就像电影里面的桥段&#xff0c;只谈DDD理论姿势很优美&#xff0c;一旦工程落地就跪了…所以DDD的项目&#xff…

【开源项目】ELADMIN 后台管理系统

项目简介 一个基于 Spring Boot 2.1.0 、 Spring Boot Jpa、 JWT、Spring Security、Redis、Vue的前后端分离的后台管理系统 开发文档&#xff1a; https://eladmin.vip 体验地址&#xff1a; ELADMIN 账号密码&#xff1a; admin / 123456 项目源码 后端源码前端源码git…

无线电频谱管理电磁兼容分析系统

一、概述 随着社会经济发展和科学技术进步&#xff0c;无线电通信事业蒸蒸日上&#xff0c;无线电新技术、新业务和新产品层出不穷&#xff0c;各类台站数量高速增长&#xff0c;电磁环境日益复杂&#xff0c;对频谱资源实施有效管理的难度愈来愈大。特别是在中国入世和政府…

Makefile学习

什么是Makefile 使用 GCC 编译器在 Linux 进行 C 语言编译&#xff0c;通过在终端执行 gcc 命 令来完成 C 文件的编译&#xff0c;如果我们的工程只有一两个 C 文件还好&#xff0c;需要输入的命令不多&#xff0c;当文件有几十、上百甚至上万个的时候用终端输入 GCC 命令的方…