pytest测试框架入门1

news2024/12/24 2:21:22

pytest单元测试框架

单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试
单元测试框架主要做什么

  1. 测试发现:从多个文件里面找到我们的测试用例
  2. 测试执行:按照一定的顺序和规则去执行,并生成结果
  3. 测试判断:通过断言判断预期结果和实际结果的差异
  4. 测试报告:统计测试进度,耗时,通过率,生成测试报告
    单元测试框架和自动化测试框架的关系

自动化测试框架

为了完成指定的系统的自动化测试,来封装的一整套完善的代码的框架,主要封装一些自动化的基础模块,自动化的管理模块,包括自动化测试的统计模块
作用

  1. 提高测试效率,降低维护成本
  2. 减少人工的干预,提高测试的准确性,增加代码的重用性
  3. 核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试

pytest单元测试框架和自动化测试框架中的关系

  1. 单元测试框架:只是自动化测试框架中的组成部分之一
  2. pom设计模式:只是自动化测试框架中的组成部分之一
  3. 数据驱动
  4. 关键字驱动
  5. 全局配置文件的封装
  6. 日志监控
  7. 断言
  8. 报告邮件等

pytest简介

  1. pytest是一个非常成熟的python的单元框架
  2. pytest可以和selenium,request,appinum结合实现web自动化,接口自动化,app自动化
  3. pytest可以实现测试用例的跳过以及returns失败用例的重试
  4. pytest可以和allure生成非常美观的测试报告
  5. pytest可以和jenkins持续集成
  6. pytest有很多非常强大的插件,并且这些插件能够实现很多的实用操作
    安装:
pip install pytest

验证是否安装成功:pytest --version

使用pytest,默认的测试用例的规则以及基础应用

  1. 模块名必须以test_开头或者_test结尾
  2. 测试类必须以Test开头,并且不能有init方法
  3. 测试方法必须以test开头

pytest测试用例的运行方式

1. 主函数模式
在这里插入图片描述
2. 命令行模式
在这里插入图片描述

以上两种方法可以运行所有用例,也可以运行部分用例
同样的,可以使用一个主文件来执行所有的测试用例
在这里插入图片描述

运行指定模块的运行:参数后面加入要指定运行模块的文件名
在这里插入图片描述

如果有多个测试文件夹,想要执行指定的文件夹:
在这里插入图片描述
通过nodeid制定用例执行:nodeid由模块名,分隔符,类名,方法名,函数组成。
比如执行某一个文件下的某一个方法或者某一个函数
方法要加类名用::隔开
在这里插入图片描述
在这里插入图片描述

参数详解:
-s :表示输出调试的信息,包括print打印的信息
在这里插入图片描述
-v:表示详情显示,测试的模块,类等
在这里插入图片描述

-n:支持多线程或者分布式运行测试用例,如下图,两个线程执行
在这里插入图片描述

–reruns=n:表示失败的重新跑n次
在这里插入图片描述

-x:表示只要有一个用例报错,测试停止
在这里插入图片描述

–maxfail=n:表示出现n个用例失败就停止
在这里插入图片描述

-k:表示执行含有指定字符串的用例
例如执行含有 “li” 的用例
在这里插入图片描述
在这里插入图片描述

pytest执行测试用例的顺序

pytest默认从上到下顺序执行
改变执行顺序:

@pytest.mark.run(order=n)

上面代码表示我想让某个用例排在第n个执行
在这里插入图片描述

3. 通过读取pytest.ini配置文件运行
pytest.ini这个文件它是pytest单元测试框架的核心配置文件
位置:一般放在项目的根目录
编码:必须为ANSI,可以使用notpad++修改编码格式
作用:可以改变pytest默认的行为
运行的规则:不管是主函数的模式运行,命令行模式运行,都会去读取这个配置文件
pytest.ini文件:
在这里插入图片描述

例如:testcase下有两个文件test_login和test_produce,那么我可以配置如下,只执行test_login文件
在这里插入图片描述

分组执行(冒烟,分模块执行,分接口和web执行)
smoke:冒烟用例,分布在各个模块里面
首先配置文件中:
在这里插入图片描述
在想要执行的用例前面加:@pytest.mark.smoke
在这里插入图片描述
在这里插入图片描述

再去执行,就会发现只执行了带有smoke标记的用例:
pytest -m “target1 or target2 or…”
执行有target1,target2…标记的用例
在这里插入图片描述

pytest跳过测试用例

1. 无条件跳过
在想要跳过的用例前面加上@pytest.mark.skip(reason=“这里写上跳过的原因”)
在这里插入图片描述
在这里插入图片描述

2. 有条件跳过
pytest.mark.skip(skipreason,reason=“这里写上跳过的原因”)。命令中存在跳过的原因
在这里插入图片描述
在这里插入图片描述

生成报告

1. html报告
一般会在项目工程中添加一个报告文件件,本例中加入report文件夹,生成的测试报告的文件名为report.html
在这里插入图片描述
在这里插入图片描述

就会在report文件下看到report.htm文件
在这里插入图片描述

浏览器打开后就是报告文件
在这里插入图片描述

2. pytest结合allure-pytest插件生成allure测试报告

  1. 下载,解压,配置path路径
    安装brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

下载allure

brew install allure
  1. 生成json格式的临时报告
--alluredir ./file

在这里插入图片描述

  1. 生成allure报告
allure generate

在这里插入图片描述

在这里插入图片描述
报告结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/46515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初学者指南: 使用NumPy数组进行图像处理

这里写自定义目录标题初学者指南: 使用NumPy数组进行图像处理1、加载图像2、裁剪图像3、分离颜色4、转换5、灰度转换6、图像分割结语初学者指南: 使用NumPy数组进行图像处理 由于图像也可以被视为由数组组成,因此我们也可以使用NumPy执行不同的图像处理任务。在本文…

【Lilishop商城】No2-6.确定软件架构搭建五(本篇包括定时任务xxl-job)

仅涉及后端,全部目录看顶部专栏,代码、文档、接口路径在: 【Lilishop商城】记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 全篇只介绍重点架构逻辑,具体编写看源代码就行,读起来也不复杂~ 谨慎&#xf…

如何配置一台适合oc渲染器的电脑?

众所周知,Octane 是最流行的渲染引擎之一。此外,Octane 是一个 GPU 渲染引擎,它使用一种计算最终生成的图片的方法,试图达到照片般的真实感。Octane 是一种利用 GPU 技术的无偏渲染引擎,非常接近物理精度。一台好的 PC…

计算机组成原理习题课第三章-2(唐朔飞)

计算机组成原理习题课第三章-2(唐朔飞) ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:&…

天宇优配|平台助企“抱团出海” “小而美”中觅“先机”

天津华图轿车物流有限公司一批二手新能源车从连云港装船发往阿联酋迪拜。(采访方针供图) 最近,一笔100.8万美元的出口信誉稳妥保单融资借款,被划到了天津华图轿车物流有限公司的账户上。正值客户“下单”高峰期,这笔及…

Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一)

Three.js实例详解___旋转的精灵女孩(附完整代码和资源)(一) 本文目录: 一、【旋转的精灵女孩】案例运行效果 二、Three.js简介 三、Three.js代码正常运行显示条件 (1)不载入任何纹理贴图的网页 (2&…

双十二蓝牙耳机啥牌子好?2022年度热销蓝牙耳机排名

这期双十二数码好物分享,工作室打算来跟大家说说蓝牙耳机这个话题,它已经成为出行必带的装备,上班族、学生党、游戏党都离不开蓝牙耳机。今年我们测评过数十款型号了,本期我们盘点了今年热销的蓝牙耳机排名,让大家直观…

【学习笔记】《Python深度学习》第五章:深度学习用于计算机视觉

文章目录1 卷积神经网络简介1.1 卷积运算1.2 最大池化运算2 在小型数据集上从头开始训练一个卷积神经网络2.1 下载数据2.2 构建网络2.3 数据预处理2.4 数据增强3 使用预训练的卷积神经网络3.1 特征提取3.2 微调模型3.3 小结4 卷积神经网络的可视化4.1 可视化中间激活4.2 可视化…

新手想开一个传奇该如何操作?开一个传奇必须掌握哪些知识要点

对于这个问题,近期问的人比较多,相比这也是热爱传奇这个游戏的朋友会问到的一个问题,因为喜欢玩这个游戏,也想要自己去开一个 经营一个 不管是电脑端也好 还是手机端也好,但是对于一些新手确实不知道该如何开始操作 从…

H3C opsf/rip/ftp/telent/nat/acl综合

实验拓扑 拓扑下载 https://sharewh2.xuexi365.com/share/84b85b32-acb7-4f62-a389-6188680a19f3?t3 图 1-1 注:如无特别说明,描述中的 R1 或 SW1 对应拓扑中设备名称末尾数字为 1 的设备,R2 或 SW2 对应拓扑中设备名称末尾数字为 2 的设备…

三天入门Redis【快速浏览版】

文章目录第一天1.1 Redis基础1.1.1 NoSql引入1.1.2 NoSql特点1.1.3 NoSql数据库1.1.4 Redis概述1.1.5 Redis文件的作用1.1.6 Redis相关介绍1.2 常用的五大类型及操作⭐️1.2.1 Redis键(key)1.2.2 库的一些操作1.2.3 Redis字符串1.2.4 Redis列表&#xff…

MATLAB数据导入

MATLAB数据导入 在编写一个程序时,经常需要从外部读入数据。MATLAB使用多种格式打开数据。本章将要介绍MATLAB中数据的导入。 MATLAB中导入数据的方式有两种,分别是在命令行通过代码把数据导进去和通过MATLAB的数据导入向导导入数据。本节将为大家介绍第…

ASCHIP_ISP Tool 工具 使用与更新

系列文章目录 ASCHIP-ISP Tool 版本1 2022 11 26ASCHIP-ISP Tool 版本1 使用说明 2022 11 26 软件介绍 对窗体进行初步配置,配置其大小与显示 一:软件介绍 ASCHIP_ISP Tool 工具是用于具有 ISP 功能型号类型的单片机进行 ISP 更新程序开发实验的配套上位…

Lint-staged自动修复格式错误及小结

文章目录一、背景二、Lint-staged2.1 简介2.2 修改package.json2.3 修改pre-commit2.4 测试三、小结3.1 代码格式规范3.2 Git提交规范一、背景 通过前面几节的介绍,目前想要提交代码,就要保证代码格式规范和提交信息格式规范,特别是pre-subm…

vue设置页面背景及背景图片

本地静态图片 <template><view class"max"><image src"../../static/bg.png" mode""></image></view> </template><script>export default {data() {return {}},methods: {}} </script><st…

JavaEE之Cookie 和 Session 的工作流程

文章目录前言Cookie 和 Session 的核心方法Cookie 和 Session 的工作流程总结前言 HTTP涉及到的键值对: query string请求/响应的headerCookie里的内容form表单提交的bofyjson格式的body服务器存储若干个sessionId和HttpSession对象每个HttpSession对象本身里面又可以保存多个…

前景一片蓝海,Android音视频开发必备基础知识汇总

转瞬间&#xff0c;2022 已慢慢步入深冬&#xff0c;回首过去一年&#xff0c;音视频技术在经历一番风浪的侵袭过后&#xff0c;变得逐渐相对平静下来。 “内卷”之外&#xff0c;大家似乎更多了一份“理性”指导我们去做一些正确的事&#xff0c;追求技术在商业中的更高价值。…

数商云B2B商城系统订货功能为新能源汽车行业赋能,打造高质量发展生态圈

近年来&#xff0c;随着传统的汽车销售模式的信息不对称、价格不透明等问题日益凸显&#xff0c;汽车电商以其低成本的优势与高速的信息流通效率迅速发展。所谓汽车电商&#xff0c;即卖家与买家通过互联网的技术和手段&#xff0c;完成汽车售后各项服务的交易流程。根据数据显…

3.Linux文件管理命令-----ls显示文件名

14天学习训练营导师课程&#xff1a; 互联网老辛《 符合学习规律的超详细linux实战快速入门》 作用&#xff1a;ls 命令用于显示目录内容&#xff0c;类似于 DOS 下的 dir 命令&#xff0c;它的使用权限是所有用户。 用法&#xff1a; ls [选项]...[文件]...1.LS应用实例如下…

数据结构 - 树 堆

树、堆是用于频繁插入、排序的数据结构。他是一种排序数据结构而不是排序算法。 堆和树是有区别的 堆&#xff1a;特殊的完全二叉树。“特殊”&#xff1a;数值上特殊&#xff0c;父比子大/小。 1. 为什么用它 书上给的例子有点奇怪&#xff1a; 他的意思是说&#xff1a;“…