【Pytest实战】pytest 基本概念及使用大全

news2024/11/16 17:30:41

😄作者简介:
小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

本篇文章主要是分享Pytest基本概念以及Pytest默认规则,后续文章给大家带来实战教程,请持续关注哦!


文章目录

  • 一、Pytest 是什么
    • 1.1 Pytest 特点
    • 1.2 单元测试与自动化测试框架
  • 二、Pytest 默认规则
  • 三、Pytest常用插件
  • 四、如何一次性安装多个插件
  • 五、Pytest 牛刀小试

一、Pytest 是什么

pytest 是一个成熟的python专用单元测试框架。

1.1 Pytest 特点

  • 简单灵活、容易上手,文档丰富,中文文档:https://www.osgeo.cn/pytest/index.html
  • 支持参数化,可以细粒度地控制要测试的测试用例。
  • 能够支持简单的单元测试和复杂的功能测试,还可以与 selenium/appium 结合做UI自动化测试,与 requsts 结合做接口自动化测试。
    Pytest拥有丰富的第三方插件,比如 pytest-selenium、pytest-html、pytest-rerunfailures等,后续会一一介绍这些插件的使用。
  • 可以很好的和CI工具结合,例如,Jenkins,做持续化集成

说到这,可能小伙伴会有疑问,什么是单元测试框架,那单元测试框架和自动化测试框架又有什么区别?

1.2 单元测试与自动化测试框架

单元测试框架(Unit Testing Framework)是一种用于编写、执行和管理单元测试的工具集合。它提供了一组函数、类和工具,帮助开发人员编写和运行针对软件中最小可测试单元(通常是函数或方法)的测试用例。
常见的单元测试框架JUnit、Pytest 。

自动化测试框架(Automation Testing Framework)是一种工具集合,用于设计、执行和管理各种类型的自动化测试,包括单元测试、集成测试、功能测试等。自动化测试框架通常提供测试脚本编写、测试用例管理、测试执行和结果报告等功能。它们可以与不同的测试工具和库集成,如单元测试框架、UI测试工具、API测试工具等,以便自动执行测试任务并生成测试报告。一些常见的自动化测试框架包括Selenium、Appium、Robot Framework等

二、Pytest 默认规则

  1. 模块名必须以test_开头或者*_test.py 结尾(也就是.py文件名)
  2. 测试类必须以Test开头,并且不能有init方法。
  3. 测试方法或者测试函数必须以test开头。

三、Pytest常用插件

pytest-html : 生成原生态html格式的自动化测试报告,自带的,不怎么好用
pytest-xdist : 测试用例分布式执行,多CPU分发
pytest-ordering :用于改变测试用例的执行顺序
pytest-rerunfailures : 用例失败后重跑
allure-pytest : 用于生成美观的测试报告

四、如何一次性安装多个插件

首先将这些插件写到一个.txt 文本文件中,如下所示,
在这里插入图片描述
再输入命令,即可一键安装

pip3 install -r request.txt

可以输入 pytest --version 检验 pytest 是否安装成功。

五、Pytest 牛刀小试

创建名为 test_sample.py 文件,内容如下:

def sum(x):
    return x + 1

def test_answer():
    assert sum(6) == 8

输入命令pytest -vs 或者pytest test_sample.py -vs即可得出测试结果。
在这里插入图片描述
针对Pytest参数的使用,后面会专门有一篇文章来讲解。小伙伴们可以关注该专栏,后续还会有更多丰富的文章哦。

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

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

相关文章

Spring6-02

JdbcTemplate JdbcTemplate是Spring提供的一个JDBC模板,是对JDBC的封装,简化了JDBC代码。当然也可以不用JdbcTemplate,可以让Spring集成其他的ORM框架,例如MyBatis、Hibernate等。接下来使用JdbcTemplate完成增删改查。 环境准备…

重写并自定义console.log()输出样式

0. 背景 笔者在开发的实践过程中对于控制台内容的输出情况有一些特殊的需求,然而,普通的console.log()函数不能提供很好的支持,因此需要探索一些自定义的实现方式,以便满足开发需求,一些开发需求如下: 输…

编译详细过程与交叉编译

GCC的编译过程: GCC编译分为四步,预处理、编译、汇编、链接。具体功能如上图所示,我们在稍微解释一下: 1.预处理: 实现过程:gcc -E xxx.c -o xxx.i 目的:我们的c程序中除了main函数以外&…

如何在Linux中使用read命令读取用户输入?——read命令实战

前言 大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第64篇文章。 专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望对你有用。 今天我们一…

实现jvm内存溢出

那么我们如何来构建一个堆内存溢出呢?其实很简单,我们只要定义一个List对象,然后通过一个循环不停的往List里面塞对象。因为只要Controller不被回收,那么它里面的成员变量也是不会被回收的。这样就会导致List里面的对象越来越多&a…

Play wright自动化测试工具该如何更加完美地使用

目录 1.1 拦截网络请求 1.2 pytest 管理用例 1.3 PO模型 1.4 API 和 UI 自动化测试融合 1.5 数据驱动 1.6 动态挑选用例执行 1.6 Allure测试报告 1.7 持续集成 1.1 拦截网络请求 网络拦截: 无响应 pass 中止 route.abort("aborted") 放行 route…

Hazel游戏引擎(013)Layers游戏的层级

文中若有代码、术语等错误,欢迎指正 文章目录 前言增加Layer后的主要类图项目相关代码项目流程效果 LayerStack类的错误 前言 此节目的 为完成008事件系统设计的第四步,将事件从Application传递分发给Layer层。 使引擎事件系统模块完整 Layer的理解 …

在VSCode下利用PlateFormIO开发Arduino的MicroROS遇到的一些问题

简介 我是按照鱼香ROS的教程【3.搭建PlateFormIO开发环境】进行的,但是在进行的过程中,遇到了一些问题,这里记录下来,供有同样问题的同学进行参考。其实只要你使用的板子的MCU是ESP32,都可以按照他这个教程进行操作。…

k8s实践之mysql集群搭建(十五)

先下载 k8s实践之mysql集群搭建资料 主从模式简介: 当master主服务器上的数据发生改变时,则将其改变写入二进制(binlog)事件日志文件中; slave从服务器会在一定时间间隔内对master主服务器上的二进制日志进行探测&am…

掌握Vue生命周期,让你的前端开发效率翻倍!

1 Vue实例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Vue实例</title><script src../vue.js></script> </head> <body><div id"root"><!-- v…

位图以及布隆过滤器

本文主要讲解哈希思想的实际应用&#xff0c;位图和布隆过滤器。 位图 讲解位图之前我们先来解答这样一道腾讯的面试题 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中。【腾讯】 很多人立马就想到了用…

Seata TCC 模式理论学习、生产级使用示例搭建及注意事项 | Spring Cloud55

一、前言 通过以下系列章节&#xff1a; docker-compose 实现Seata Server高可用部署 | Spring Cloud 51 Seata AT 模式理论学习、事务隔离及部分源码解析 | Spring Cloud 52 Spring Boot集成Seata利用AT模式分布式事务示例 | Spring Cloud 53 Seata XA 模式理论学习、使用…

STL——set容器、map容器

初识STL **set容器/multiset容器****set容器——构造和赋值****set容器——大小和交换****set容器——插入和删除****set容器的查找和统计****set和multiset的区别****set的相关操作源码&#xff1a;****multiset的相关操作源码** **pair使用——pair队组的创建****set容器——…

FreeRTOS-定时器详解

✅作者简介&#xff1a;嵌入式入坑者&#xff0c;与大家一起加油&#xff0c;希望文章能够帮助各位&#xff01;&#xff01;&#xff01;&#xff01; &#x1f4c3;个人主页&#xff1a;rivencode的个人主页 &#x1f525;系列专栏&#xff1a;玩转FreeRTOS &#x1f4ac;保持…

2023全国计算机二级考试时间(全年各阶段考试时间安排)

2023全国计算机二级考试时间(全年各阶段考试时间安排) 2023年全国计算机二级考试时间分别为&#xff1a;3月25日至27日(上半年3月)、9月23日至25日(下半年9月)。 其中3月和9月开考全部级别全部科目&#xff0c;5月和12月考试开考一、二级全部科目&#xff0c;各省级承办机构可根…

RabbitMQ集群部署之镜像模式

RabbitMQ集群的普通模式中&#xff0c;一旦创建队列的主机宕机&#xff0c;队列就会不可用。不具备高可用能力。如果要解决这个问题&#xff0c;必须使用官方提供的镜像集群方案。 官方文档地址&#xff1a;https://www.rabbitmq.com/ha.html 1.镜像模式的特征 默认情况下&a…

离心式冷水机组

离心式冷水机组是利用电作为动力源&#xff0c;氟利昂制冷剂在蒸发器内蒸发吸收载冷剂水的热量进行制冷&#xff0c;蒸发吸热后的氟利昂湿蒸汽被压缩机压缩成高温高压气体&#xff0c;经水冷冷凝器冷凝后变成液体&#xff0c;经膨胀阀节流进入蒸发器再循环。从而制取7℃-12℃冷…

解决jvm内存溢出的方法

上一篇问题讲了怎么实现jvm内存溢出,现在已经实现了,那怎么去解决它呢. java.lang.OutOfMemoryError: GC overhead limit exceeded 简单来说&#xff0c;java.lang.OutOfMemoryError: GC overhead limit exceeded发生的原因是&#xff0c;当前已经没有可用内存&#xff0c;经…

【IMX6ULL驱动开发学习】06.APP与驱动程序传输数据_自动创建设备节点(hello驱动)

一、APP与驱动之间传输数据 /*驱动从APP获取数据*/ unsigned long copy_from_user(void *to, const void *from, unsigned long n)/*驱动传输数据到APP*/ unsigned long copy_to_user(void *to, const void *from, unsigned long n)二、使用copy_to_user、copy_from_user在AP…

如何把视频声音转成文字?分享三个实用的方法!

在日常学习中&#xff0c;有些小伙伴可能想将视频课程中老师的讲解内容整理出来&#xff0c;但是逐字逐句地打字既低效又耗时。那么&#xff0c;如何将视频声音快速转换为文字呢&#xff1f;答案是使用记灵在线工具&#xff01;下面我将分享几种使用记灵在线工具快速将视频声音…