pytest简介

news2024/11/22 11:23:42
    • 介绍

pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:

简单灵活,容易上手

支持参数化

能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)

pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等

测试用例的skip和xfail处理

可以很好的和jenkins集成

report框架----allure 也支持了pytest

    • 安装

pip install pytest

或者在pycharm设置中进行安装

检查安装是否成功以及安装的版本,命令行命令如下:

  pytest --version
    • 用例编写

当我们通过 pytest 执行用例时,pytest 会自动递归遍历执行路径下所有的目录,根据 pytest 中默认用例的识别的规则,自动收集测试用例。所有在使用 pytest 编写测试用例之前,我们首先需要了解一下 pytest 收集用例时默认的用例识别规则。

默认的用例识别的规则

用例文件:所有文件名为 开头 或者 开头的文件会被识别为用例文件。test__test

用例类,测试文件中没有每个 Test 开头的类型就是一个测试用例类。

测试用例:测试类中每个 test 开头的方法就是一条测试用例,测试文件中每个 test 开头的函数也是一条测试用例,

例如:

断言

pytest 里面断言实际上就是 python 里面的 assert 断言方法,常用的有以下几种
assert xx :判断 xx 为真
assert not xx :判断 xx 不为真
assert a in b :判断 b 包含 a
assert a == b :判断 a 等于 b
assert a != b :判断 a 不等于 b
    • 执行

只重新运行上次失败的用例
pytest  --lf -vs
先运行上次失败的用例再运行其余的测试用例
pytest  --ff 

python代码执行pytest(main函数)

    • 常用命令行参数

-x 用例一旦失败,就立刻停止执行
--maxfail=num 用例失败个数达到num后停止执行
-m 标记用例
-k 执行包含某个关键字的测试用例
-v 打印详细日志
-s 打印输出日志(一般-vs一起使用)
--collect-only 收集测试用例
    • 常用装饰器

参数化

class Testdome:
    a = ["1", "2", "3"]

    # 参数化,ids表示起别名
    @pytest.mark.parametrize("sum", a, ids=["test1", "test2", "test3"])
    def test_demo(self, sum):
        print(sum)
跳过测试用例

@pytest.mark.skip
#加入跳过原因
@pytest.mark.skip(reason="该条用例跳过")
    • 异常处理机制

try:
except
pytest.raises()
    • 常用数据驱动

excel

文件格式

数据驱动案例

csv文件

文件格式

数据驱动案例

json文件

文件格式

数据驱动案例

yaml文件

文件格式

数据驱动案例

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

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

相关文章

我写了一个脚本,实现了图片分类问题模型训练的全自动化训练

众所周知,图片分类问题属于计算机视觉中比较容易解决的问题之一 但 这几天被数据集的问题搞得焦头烂额, 照理说分类问题的数据集应该比较好制作 但 如果之前没有现成的数据集 也会变得比较麻烦 直到我偶然发现了一个HuggingFace的图片搜索API 无限次调用 而且不需要身份验证 真…

如何实现报表集成?(五)——集成案例分享

在前面几篇,我们分别给大家介绍了报表工具的系统集成架构、用户同步/单点登录、资源集成和权限集成,从整体上对报表工具实现系统集成的各个方面都作了针对性的阐述。那别的用户实际上是如何做报表集成的呢? 这一篇,我们来看一下某…

408—二叉树与树

二叉树的一些概念://二叉树有严格的左右子树之分,度数为2的树则没有对此进行要求。常见的两种二叉树://如上E为满二叉树,每一层的结点个数都达到了当层能达到的最大结点数//满二叉树自上而下,从左到右依次进行编号&…

易于理解的完全立方体计算的多路数组聚集方法

自己琢磨半天终于搞懂了,可能是自己悟性不够吧-_-|| 多路数组聚集其实就是对维度(dimension)进行选择,保留一些常用的可以很方便地生成别的子立方体的立方体(cube)。对一个维做聚集(aggregation)其实就是按照这个维度的方向做加法,把这个维度…

Linux下的动静态库及链接

目录 常识 动态链接 静态链接 两者的比较 动态库与静态库 常识 我们平时写的代码和标准库是两回事,像C标准库提供给我们一些函数方便使用,降低程序员工作成本。比如写个printf("hello world"); 我们只是调用了库里的函数,并没…

字节跳动“技穷”,火山引擎“啃老”

文丨智能相对论作者丨沈浪「云」的赛道正在细化,是显而易见的趋势,诸如汽车云、营销云、视频云、零售云等等,大致可以理解为通过云计算等技术推动特定行业场景实现数字化转型的解决方案。之所以出现这种情况,存在多个层面的原因&a…

Kubernetes部署Postgresql

环境:Postgresql的Docker镜像 ->参考Docker安装部署PostgresqlCentos7.x kubernetes1.23.7 docker1.13.1 postgres12.7pg的docker镜像已经上传到云平台。Kubernetes参考:https://kubernetes.io/zh-cn/docs/concepts/configuration/configmap基本命…

Youngter-drive 题解

1.查壳 32bit,加了UPX壳 2.虚拟机脱壳 Youngter-drive脱壳3.静态分析寻找思路 跟进main_0函数 线程控制的知识不懂,去搜一下函数 createMutexW 函数 创建或打开命名或未命名的互斥对象。 HANDLE CreateMutexW( [in, optional] LPSECURITY_ATTRIBUTES lp…

通信原理笔记—部分响应基带传输系统

目录 基本设计思想: 问题的引入与考虑: 第一类部分响应系统: 定义奈奎斯特脉冲: 定义第一类部分响应系统的冲激响应: 第一类部分响应系统冲激响应与频率特性波形图: 第一类部分响应系统信号波形示例: 编码发送与接收解码过程示例: 第…

Biome-BGC生态系统模型与Python融合技术实践应用

查看原文>>> Biome-BGC生态系统模型与Python融合技术实践应用 Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数,模拟日尺度碳、水和氮通量的有效模型,其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中&#xf…

Tomcat 源码启动

要想学习 Tomcat 原理,看源码是最直接的方式,而想要理解源码,我们要想把它在本地跑起来。 下载源码 到 Tomcat 的官网 http://tomcat.apache.org 上下载 Tomcat 的源码 下载下来是一个压缩包文件 解压之后目录结构如下 用IDEA打开 在…

redis集群管理工具HHDBCS

参考地址: HHDBCS下载地址 Redis教程 1 快速介绍 1.1 什么是HHDBCS? HHDBCS是恒辉信达公司推出的通用数据库管理桌面工具,专为简化数据库的管理及数据管理成本而设计,让用户通过统一的桌面视图管理成千上万的异构数据库实例。 它采用了…

【Feign】Spring框架集成Feign

Spring框架集成Feign1、Feign-简介2、spring-cloud快速整合OpenFeign3、Feign日志4、Feign契约配置5、Feign配置超时时间6、Feign拦截器7、Feign断路器1、Feign-简介 Feign是Neflix开发的声明式、模块化的HTTP客户端,集成了Ribbon、RestTemplate实现了负载均衡的执…

快收藏,2023有这些财务分析模板就够了

相信很多的财务人都才刚刚经历一个兵荒马乱的年终,各种核算、整理、分析,工作量直线上升,说不定加班几点半个月都未必能歇一下。但不用担心,在接下来的2023里,可以通过BI财务分析报表模板来高效解决这些问题。 BI软件…

[python][VTK]vtk安装后测试代码

测试vtk版本为9.2.5 import vtk cone_a vtk.vtkConeSource() coneMapper vtk.vtkPolyDataMapper() coneMapper.SetInputConnection(cone_a.GetOutputPort()) coneActor vtk.vtkActor() coneActor.SetMapper(coneMapper) ren1 vtk.vtkRenderer() ren1.AddActor(coneActor…

黑马点评项目要点内容总结【面试用】

小众点评项目要点 文章目录小众点评项目要点1.使用Redis代替Session登录1.1 Session登录存在的问题1.2 使用Redis代替Session登录分析1.3 使用Redis登录的流程1.4 解决Redis中有效期问题2.使用Redis作为缓存2.1 为什么使用缓存2.2 缓存策略2.3 解决缓存穿透2.4 解决缓存雪崩2.5…

熵值法原理及python实现 附指标编制案例

文章目录1.简单理解 信息熵2.编制指标 (学术情景应用)3.python实现3.1 数据准备3.2 数据预处理3.3 熵值、权重计算3.4 编制综合评价指标熵值法也称熵权法,是学术研究,及实际应用中的一种常用且有效的编制指标的方法。1.简单理解 信…

在数组中删除重复数字(详解)

前言:本期是关于删除重复数字的详解,今天你c了吗? 方法: 双指针 以一组数:3 4 1 0 0 2 3 1 1 2 为例删除重复的数字 step 1:排序 使用双下标法的前提是数组有序(降序or升序) 可以使…

MYSQL命令总结

一.库的操作 1.创建库 create database db1;//创建名为db1的数据库 create database db2 charsetutf8;//创建一个utf8字符集的db2数据库 create database db3 charsetutf8 collate utf8_general_ci;//创建一个使用utf字符集并带校对规则的db3数据库2.字符集和校验规则 show …

[redis+springboot]缓存sql执行结果

场景: 访问controller层(其实是service),需要将其结果缓存到redis,下一次直接从缓存找值,从而减少sql操作,减轻数据库压力技术: redis,springboot,jpa,mysql1, 新建项目2, 导入依赖<?xml version"1.0" encoding"UTF-8"?> <project xmlns"h…