Pytest自动化框架~权威教程03-原有TestSuite的执行方法
前言
TestSuite一直是unittest的灵活与精髓之处, 在繁多的测试用例中, 可以任意挑选和组合各种用例集, 比如smoke用例集, level1用例集, webtest用例集, bug回归用例集等等, 当然这些TestSuite需要我们提前定义好, 并把用例加载进去.
Pytest采取的是完全不同的用例组织和运行方式.用例的运行主要基于名称匹配, 组织则基于用例目录, 用例命名格式及用例mark标签, 这种方式省去了麻烦的提前定义TestSuite及加载用例的过程, 执行时通过路径/用例名格式/不同的标签组合来动态匹配出要执行的用例, 使用更加灵活.
然而, 从原有的unittest框架转向pytest怀抱时仍不得不面临这样一个问题:
我原先定义好的TestSuite怎么执行?
在Pytest官方文档: 与原有的测试套件一起使用 (原文链接 | 翻译) 一节中, 提到Pytest支持大多数测试套件, 然后怎么使用却顾左右而言他, 相当于什么都没写.
实现方法
下面是个人研究的Pytest运行TestSuite的方法:
主要思路:
迭代遍历TestSuite中的所有case得到每个case的路径test_demo.TestDemo.test_a
将case路径转化为Pytest支持的运行格式test_demo.py::TestDemo::test_a并组成一个case名称列表供Pytest调用
示例用例: test_demo.py
import unittestclassTestDemo(unittest.TestCase):deftest_a(self):print("a")deftest_b(self):print("b")示例测试套件: demo.py
import unittest
import pytest
from test_demo import TestDemosuite = unittest.TestSuite()
suite.addTests([TestDemo('test_a'), TestDemo('test_b')])# 因为suite中可能会存在嵌套, 所以我们要迭代取出其中所有的用例:defcollect(suite): cases =[]# 用于存放Pytest支持的用例路径字符串def_collect(tests):# 递归,如果下级元素还是TestSuite则继续往下找ifisinstance(tests, unittest.TestSuite):[_collect(i)for i in tests if tests.countTestCases()!=0]else:_path = tests.id().split(".")# case.id()可以获取用例路径(字符串)_path[0]+=".py"cases.append("::".join(_path))# 如果下级元素是TestCase,则添加到TestSuite中_collect(suite)return casesif __name__ =='__main__':cases = collect(suite)pytest.main([*cases,"-v"])# pytest.main(cases) # 不加额外参数的化可直接执行cases原有TestSuite的执行方法
Pytest可以与大多数现有的测试套件(testsuite)一起使用,但是它的加载方式方式不像nose或Python的默认单元测试框架的测试运行器(test runner)。
在使用本节之前,你需要安装pytest。
使用pytest运行已存在的测试套件(test suite)
假设你想要在某个地方为现有仓库(respsitory)做贡献代码。 在使用某种版本控制软件拉取代码和设置完virtualenv (可选)后,你需要运行:
Copycd <仓库名>
pip install -e . # 环境所依赖的'python setup.py develop' 和 'conda develop'包在你项目根目录中,这将为你的代码在site-packages中设置一个符号链接,来允许你无需安装自己的代码即可执行测试。
在开发模式下如此使用,可以避免每次要运行测试时重新安装,这比每次使用sys.path将测试指向本地代码更简单。
或者你可以考虑使用[tox。
实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
电商项目实战
web测试项目
web+App+h5+小程序 测试项目
接口自动化测试实战项目
Linux实战项目

面试资料
我们进阶学习自动化测试必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

以上资料,对于想要测试进阶的朋友们来说应该会很有帮助,需要的小伙伴可以后台私信找我免费领取
总结
我见过很多leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了好几年,更夸张的是7、8年工作内容的重复性比较高,没有什么技术含量的工作。
凡事要趁早,特别是技术行业,一定要提升技术功底,丰富自动化项目实战经验,这对于你未来几年职业规划,以及测试技术掌握的深度非常有帮助。
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。
如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步
在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。
我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,
测试开发视频教程、学习笔记领取传送门!!!

相关文章:
Pytest自动化框架~权威教程03-原有TestSuite的执行方法
前言TestSuite一直是unittest的灵活与精髓之处, 在繁多的测试用例中, 可以任意挑选和组合各种用例集, 比如smoke用例集, level1用例集, webtest用例集, bug回归用例集等等, 当然这些TestSuite需要我们提前定义好, 并把用例加载进去.Pytest采取的是完全不同的用例组织和运行方式…...
web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架
1、 开发环境 win7 64 PyCharm 4.0.5 setuptools-29.0.1.zip 下载地址:setuptools-29.0.1.zip_免费高速下载|百度网盘-分享无限制 官方下载地址:setuptools PyPI python 3.3.2 mysql-connector-python-2.1.4-py3.3-win64 下载地址:mysq…...
【MyBatis】源码学习 05 - 关于 xml 文件解析的分析
文章目录前言参考目录学习笔记1、章节目录概览2、14.3:SqlSourceBuilder 类与 StaticSqlSource 类3、14.4.2:ResultMapResolver 类3.1、测试代码说明3.2、结果集 userMap 解析流程3.3、结果集 getGirl 解析流程3.4、鉴别器 discriminator 解析流程4、14.…...
代码随想录算法训练营第二天| 977. 有序数组的平方、209. 长度最小子数组、59.螺旋矩阵II
977 有序数组的平方题目链接:977 有序数组的平方介绍给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。思路看到题目的第一反应,首先负数的平方跟正数的平方是相同的&…...
Ethercat系列(10)用QT实现SOEM主站
首先将SOEM编译成静态Lib库可以参考前面的博文(83条消息) VS2017下编译SOEM(Simle Open EtherCAT Master)_soem vs_CoderIsArt的博客-CSDN博客make_libsoem_lib.bat "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build" x86用QT创建…...
论文投稿指南——中文核心期刊推荐(科学、科学研究)
【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...
jQuery属性操作prop()、attr()和data()
jQuery 提供了一些属性操作的方法,主要包括 prop()、attr() 和 data() 等。通过这些方法,能够实现不同的需求。下面我们分别进行详细讲解。 1.prop() 方法 prop0 方法用来设置或获取元素固有属性值。元素固有属性是指元素本身自带的属性,如 …...
git的使用
1.git的四个区域: 2.常规git命令 git status 查看working directory哪些文件被更改了git add .把更改add到staging area,缓存的地方。改一个地方可以就先暂存一下,最后确认是哪些改动后再一起commit,以免不必要的版本。 在暂存区域ÿ…...
webpack生产环境配置
3 webpack生产环境配置 由于笔记文档没有按照之前的md格式书写,所以排版上代码上存在问题😢😢😢😢 09 提取css成单独文件 使用下载插件 npm i mini-css-extract-plugin0.9.0 -D webpack配置此时a,b提取成单独文件,并且…...
linux下安装jenkins
1.初始化Jenkins安装环境 系统版本:Red Hat Enterprise Linux 8.7 将脚本文件jenkins_install_env.sh 、 jenkins_install.sh和apache-maven-3.6.2-bin.tar.gz、jdk-8u251-linux-x64.tar.gz都上传到/usr/local/src目录下执行jenkins_install_env.sh脚本初始化Jenki…...
IGKBoard(imx6ull)-I2C接口编程之SHT20温湿度采样
文章目录1- 使能开发板I2C通信接口2- SHT20硬件连接3- 编码实现SHT20温湿度采样思路(1)查看sht20从设备地址(i2cdetect)(2)获取数据大体流程【1】软复位【2】触发测量与通讯时序(3)返…...
MyBatis——配置文件完成增删改查
1.首先先创建一个新的表,使用下面的sql语句 -- 删除tb_brand表 drop table if exists tb_brand; -- 创建tb_brand表 create table tb_brand (-- id 主键id int primary key auto_increment,-- 品牌名称brand_name varchar(20),-- 企业名称company_name varchar(20…...
Python内置函数 — all,any
1、all 源码注释: def all(*args, **kwargs): # real signature unknown"""Return True if bool(x) is True for all values x in the iterable.If the iterable is empty, return True."""pass 语法格式: all(iterable)…...
Pycharm配置QGIS环境
版本信息:QGIS: 3.22.16Pycharm:2022.3.2 (Community Edition)在QGIS官网下载安装包,下载稳定版本即可。配置步骤:安装完成后,使用Pycharm新建工程Python编译器选择之前配置好的编译器环境选择左侧第一个Vi…...
【C++】stack 与 queue
stack 与 queuestackSTL 容器中 stack 的使用模拟实现 stackqueueSTL 容器中 queue 的使用模拟实现 queuestack 在数据结构中,我们了解到,stack 栈结构,是一种先进后出的结构,并且我们是使用顺序表来进行实现栈的操作的。 STL 容…...
ARC142E Pairing Wizards
ARC142E Pairing Wizards 题目大意 有nnn个法师,编号为111到nnn。法师iii有强度aia_iai,他计划打败强壮度为bib_ibi的怪物。 你可以执行以下操作任意次: 选中一个法师,将它的强壮度增加1 一对法师(i,j)(i,j)(i,j)称为好的…...
Spark开发实战-主播打赏排行榜统计
(一)需求分析 计算每个大区当天金币收入排名前N的主播 背景: 我们有一款直播APP,已经在很多国家上线并运营了一段时间,产品经理希望开发一个功能,计算前N主播排行榜,按天更新排名信息…...
python 如何存储数据 (python 的文件和异常)
文章目录存储数据1. 使用 json.dump() 和 json.load()json.dump()2. 保存和读取用户生成的数据存储数据 很多程序都要求用户输入某种信息,如让用户存储游戏首选项或提供要可视化的数据。不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结…...
第三章-OpenCV基础-8-绘图函数
前置内容 这篇内容不是本书内容,但后续用的到,特做记录。 使用OpenCV中不可避免需要用到各种绘图功能,比如绘制人脸库、显示人脸识别信息,那就需要用到OpenCV的绘图函数,这些函数包括cv2.line(), cv2.circle(),cv2.rectangle()…...
逆约瑟夫问题
约瑟夫问题可以说十分经典,其没有公式解也是广为人知的~ 目录 前言 一、约瑟夫问题与逆约瑟夫问题 1.约瑟夫问题 2.逆约瑟夫问题 二、思考与尝试(显然有很多失败) 问题分析 尝试一:递归/递推的尝试 尝试二:条件…...
Qwen3-4B Instruct-2507实际作品:用户说‘我要创业’→商业计划书框架生成
Qwen3-4B Instruct-2507实际作品:用户说‘我要创业’→商业计划书框架生成 1. 引言:当创业想法遇到AI助手 “我要创业!” 这句话背后,往往是一个激动人心的想法,但随之而来的是一连串的现实问题:我的商业…...
git -- 替换项目已经存在的 git 远程仓库地址
要将项目中的 Git 远程仓库地址修改为新的地址(http://192.168.3.32:9980/java/transketch-portal-backend),你可以按照以下步骤操作:方法一:使用 Git 命令行打开终端或命令提示符导航到你的项目目录运行以下命令&…...
终极指南:如何用 tf-quant-finance 实现 Hull-White 模型的百慕大式互换权定价
终极指南:如何用 tf-quant-finance 实现 Hull-White 模型的百慕大式互换权定价 【免费下载链接】tf-quant-finance High-performance TensorFlow library for quantitative finance. 项目地址: https://gitcode.com/gh_mirrors/tf/tf-quant-finance 在量化金…...
UniHacker:跨平台支持的开源工具快速部署方案
UniHacker:跨平台支持的开源工具快速部署方案 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker UniHacker作为一款专业的开源工具,凭借…...
1815《中国城市统计年鉴》面板数据(1985-2024)
1、搜说数据皮皮侠2、使用兑换码 516004233462b5Qy0SoHIf26 获取注意:兑换码2026.3.30(不包括30号)前有效!数据简介《中国城市统计年鉴》是国家统计局城市社会经济调查司主办的、全面反映中国城市经济和社会发展情况的资料性年刊。…...
避坑指南:Cypress CYT4B的Mcal CAN配置,这5个参数配错直接通信失败
Cypress CYT4B的Mcal CAN配置实战:5个致命参数解析与避坑策略 实验室里,示波器上的CAN波形杂乱无章,工程师反复检查硬件连接却始终无法建立稳定通信——这可能是许多嵌入式开发者调试CYT4B系列芯片时的真实写照。当硬件排查无果后,…...
学术风控新范式:陌讯 AIGC 检测论文 AI 代写识别技术详解
摘要:随着生成式人工智能(AIGC)技术的爆发式迭代,GPT-4、文心一言等大模型已能生成逻辑连贯、格式规范的学术论文,AI代写、AI润色过度等学术不端行为呈现隐蔽化、规模化趋势,传统查重工具难以应对这一新型学…...
STM32在博物馆环境监测系统中的应用设计
基于STM32的博物馆文物展柜环境监测与控制系统设计1. 项目概述1.1 系统架构本系统采用STM32F103RCT6作为主控制器,构建了一套完整的文物展柜环境监测与控制解决方案。系统通过集成多种传感器和执行机构,实现了对展柜内温度、湿度及光照强度的实时监测与自…...
陀螺匠企业助手-产品
1. 功能说明维护出售产品的基本信息数据,支持在添加商机/合同中进行选择。2. 进入产品页面路径:客户>产品管理>产品3. 新增产品功能说明:维护产品信息,添加完成的产品信息,可以在添加商机/合同中进行选择。新增产…...
ST7565SPI嵌入式LCD驱动库:轻量、可移植、零内存分配
1. ST7565SPI 驱动库概述ST7565 是 Sitronix 公司推出的单芯片图形点阵 LCD 控制器,广泛应用于工业人机界面、便携式仪器仪表、智能穿戴设备等对功耗、成本与显示质量有综合要求的嵌入式场景。其典型分辨率为 12864 像素,内置 12864 bit 显示 RAM&#x…...
