一篇文章了解Pytest单元测试框架

文章目录

  • 1.Pytest是什么
  • 2.Pytest的安装
  • 3.Pytest快速入门
  • 4.Pytest文件规范
  • 5.常用的断言类型

1.Pytest是什么

pytest 是一个功能强大且灵活的 Python 测试框架,主要优点包括简洁易用、自动测试发现、丰富的插件生态系统、参数化测试、详细的断言错误信息、以及强大的 fixtures 机制。

2.Pytest的安装

对于所有的第三方库都可以使用pip install xxx进行安装.

对于pytest的安装,可以直接在pycharm中打开终端,输入

pip install pytest

即可开始安装.如果下载比较慢可以使用国内镜像源进行下载

3.Pytest快速入门

创建一个pytest_learn的包,在包下面创建test_demo1.py:

输入以下内容:

def test_one():assert 1 == 1

然后在命令行中输入pytest

运行结果:

image-20240910215322995

可以看到找到了一条测试用例以及文件路径,一条测试用例通过加上执行的时间

将文件内容改成:

def test_one():assert 1 == 2

再次执行:

image-20240910215613857

可以看到这里就报错了,有很明显的红色,红线中的内容就是错误的原因

除了上述运行pytest用例的方式,还可以旁边的小三角执行用例

image-20240910215927817

不过这种方式只适合单个测试用例的执行

如果没有小三角,可以在设置中进行配置

image-20240910220022688

4.Pytest文件规范

⭐文件命名规范:

  1. .py测试文件必须以“test_”开头或者以“_test”结尾
  2. 测试方法必须以“test_”开头
  3. 测试类必须以Test开头,并且不能有init方法

如果命名不规范就会造成找不到测试用例的情况

我这个包下面有两个文件,一个符合规范,一个不符合规范.

image-20240910220419906

两个文件中都写好了对应的用例

image-20240910220545441

在命令行中输入pytest 加上路径

image-20240910220525262

可以看到只执行了一条测试用例.

但是如果直接执行具体的文件下面,即使文件命名不规范但是方法命名规范也是可以执行的,如图所示:

image-20240910220744007

如果文件是以test_开头,默认就是以pytest去运行的

image-20240910221214293

如果不想用pytest去运行,有两种解决方案:

  1. 修改文件名称

  2. 在设置中修改测试框架为Unittests

    image-20240910221556007

测试类必须以Test开头,并且不能有init方法

例如:

class TestCase:def __init__(self):passdef test_1(self):assert 1==1def test_2(self):assert "a" == "abc"

运行结果:

image-20240910221921625

执行测试类中的测试用例的方法除了在命令行中输入pytest "想要运行文件的测试路径"和点击测试类的小三角之外,还可以创建main方法

if __name__ == '__main__':pytest.main()

运行main方法即可

5.常用的断言类型

  1. 基本等价性检查:
    • assert x == y: 检查变量x是否等于y。
    • assert x != y: 检查变量x是否不等于y。
    • assert x is y: 检查变量x和y是否引用相同的对象。
    • assert x is y: 检查变量x和y是否引用不相同的对象。
  2. 集合操作:
    • assert x in y: 检查x是否是y的成员。
    • assert x not in y: 检查x是否不是y的成员。
  3. 比较操作:
    • assert x < y: 检查x是否小于y。
    • assert x > y: 检查x是否大于y。
    • assert x <= y: 检查x是否小于或等于y。
    • assert x >= y: 检查x是否大于或等于y。

示例:

    def test_3(self):assert 1 == 1assert 1 != 2assert  1 < 2assert  2 > 1assert  3 >= 3assert 3 <= 3assert  "a" in "abc"assert "a" not in "xxx"e = [1, 2, 3]f = eg = [2, 3, 4]assert e is fassert g is not f

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7虚拟机下安装及使用Docker

文章目录 一&#xff0c;准备工作二、安装Docker三、启动Docker四、验证Docker五、使用Docker六&#xff0c;卸载Docker 有一个Centos7的虚拟机&#xff0c;想要安装个docker测试一些docker用法和熟悉命令 一&#xff0c;准备工作 1&#xff0c;使用uname -r命令检查系统内核…

K8s中如何使用etcd进行集群信息的备份与恢复

这里写目录标题 ETCD是什么?1. **`etcd`(服务)**2. **`etcdctl`(客户端工具)**如何安装etcdctl(客户端工具)查看目前K8s自带etcd中的版本信息安装对应版本的etcdutl工具下载 `etcdutl` 3.5.7 版本配置环境变量创建备份文件验证一下备份的快照文件备份文件恢复的效果演示…

怎么抓住威士忌蓝海市场?

​前些天和朋友吃饭&#xff0c;聊起来威士忌。 朋友说&#xff0c;这个威士忌啊&#xff0c;最近几年增值特别快&#xff0c;甚至超过了黄金、名表、艺术品、红酒这些经典的投资品类。而且存放得越久&#xff0c;升值的幅度就越大。 再加上&#xff0c;中国的威士忌市场现在…

【无标题】乡村研学旅行系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;客服聊天管理&#xff0c;基础数据管理&#xff0c;论坛管理&#xff0c;景点管理&#xff0c;商品管理&#xff0c;研学管理 微信端账号功能包括&#xff1a;系统首页&#xf…

第十九次CCF计算机软件能力认证题目解析(详细题解+代码+个人解读+持续跟新)

第一题 线性分类器 考虑一个简单的二分类问题——将二维平面上的点分为 A A A 和 B B B 两类。 训练数据包含 n n n 个点&#xff0c;其中第 i i i 个点&#xff08; 1 ≤ i ≤ n 1 ≤i ≤ n 1≤i≤n&#xff09;可以表示为一个三元组 ( x i , y i , t y p e i ) (x_i,y…

操作系统 --- 线程(Threads)概念 多线程模型 线程控制与组织

零、学习路线 一、线程的引入&#xff0c;什么是线程&#xff0c;为什么要引入线程&#xff1f; 如果说&#xff0c;在OS中引入进程的目的是为了使多个程序能并发执行&#xff0c;以提高资源利用率和系统吞吐量&#xff0c;那么&#xff0c;在操作系统中再引入线程&#xff0c…

Tableau 2024.3 快来了,你期待哪些新功能?

时隔不久&#xff0c;Tableau 再次发力&#xff0c;即将推出 2024.3 新版本&#xff01; 今年 7 月&#xff0c;Tableau 2024.2 的发布为数据分析领域带来了诸多创新。 时隔不久&#xff0c;Tableau 再次发力&#xff0c;即将推出 2024.3 新版本&#xff01;届时&#xff0c;将…

掌握动态文档生成的艺术:探索Python的docxtpl库

文章目录 掌握动态文档生成的艺术&#xff1a;探索Python的docxtpl库1. 背景介绍2. 库简介3. 安装指南4. 基础函数介绍5. 实际应用场景6. 常见问题及解决方案7. 总结 掌握动态文档生成的艺术&#xff1a;探索Python的docxtpl库 1. 背景介绍 在数据处理和自动化办公领域&#x…

今天讲点简单的:进制1

啊&#xff0c;哈喽&#xff0c;小伙伴们&#xff0c;大家好。我是#Y清墨&#xff0c;今天呐&#xff0c;我要介绍的是二进制。 导语 好久不见&#xff0c;今天来玩些简单的——二进制。 一.初步认识 十进制是逢十进一&#xff0c;那么&#xff0c;顾名思义&#xff0c;二进制…

QXlsx编译静态库-配置为Qt模块

Qt读写Excel–QXlsx编译为静态库-配置为Qt模块&#x1f346; 文章目录 Qt读写Excel--QXlsx编译为静态库-配置为Qt模块&#x1f346;[toc]1、概述&#x1f954;2、准备工作&#x1f955;3、配置环境&#x1f33d;4、加载QXlsx静态库&#x1f952; &#x1f449;QXlsx使用&#x…

Golang | Leetcode Golang题解之第389题找不同

题目&#xff1a; 题解&#xff1a; func findTheDifference(s, t string) (diff byte) {for i : range s {diff ^ s[i] ^ t[i]}return diff ^ t[len(t)-1] }

编曲术语:各种段落的英文表示 Cubasis和Cubase联合编曲

在编曲中&#xff0c;常见的段落英文表示如下&#xff1a; 前奏&#xff08;Intro&#xff09;&#xff1a;通常是歌曲开头的部分&#xff0c;用于引入主题&#xff0c;营造氛围。 主歌&#xff08;Verse&#xff09;&#xff1a;歌曲的主要叙述部分&#xff0c;一般有多段&am…

国庆假期出行必备!西圣PB充电宝!外出旅游出行好搭档!

随着国庆假期的脚步日益临近&#xff0c;大家的心早已飞向了那片期待已久的远方。无论是计划着与家人共赴山水之间&#xff0c;还是与好友相约城市探索&#xff0c;一场说走就走的旅行总是让人心潮澎湃。然而&#xff0c;在享受旅途的欢乐与自由时&#xff0c;手机电量不足的问…

力扣题解2552

大家好&#xff0c;欢迎来到无限大的频道。 今天和大家分享的是2552的题解思路。 题目描述&#xff1a; 统计上升四元组 一个长度为 n 下标从 0 开始的整数数组 nums &#xff0c;它包含 1 到 n 的所有数字&#xff0c;请你返回上升四元组的数目。 如果一个四元组 (i, j, …

JavaScript高级进阶(二)

JS弹窗 弹窗与语法 警告窗 window.alert()//用于确保用户可以得到某些信息 确认窗 window.confirm()//用于验证是否接受用户操作 提示窗 window.prompt()//用于提示用户在进入页面前输入某个值 <script> //警告窗 alert(欢迎光临); //提示框 var str prompt(是不是…

线程(Thread)

目录 线程&#xff08;Thread&#xff09; 线程的创建方式 实现方式 Runnable和Callable的区别 线程的命名和优先级 线程的六种状态 线程的插队 线程的中断 线程的让出 守护线程 设置线程为守护线程 sleep()和wait()的区别 线程的同步synchronized锁 语法格式 实现…

使用kubeadm部署k8s集群

1、简介 K8s部署主要有两种方式&#xff1a; 1、Kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 2、二进制 从github下载发行版的二进制包&#xff0c;手动部署每个组件&#xff0c;组成Kubernetes集…

828华为云征文|华为云Flexus云服务器X实例之openEuler系统下部署WordPress网站

828华为云征文&#xff5c;华为云Flexus云服务器X实例之openEuler系统下部署wordpress网站 前言一、Flexus云服务器X实例介绍1.1 Flexus云服务器X实例简介1.2 Flexus云服务器X实例特点1.3 Flexus云服务器X实例使用场景 二、WordPress介绍2.1 WordPress简介2.2 WordPress主要特点…

有什么免费好用的ai写作软件?2024帮助你快速进行写作的软件

有什么免费好用的ai写作软件&#xff1f;2024帮助你快速进行写作的软件 AI写作软件如今在提升写作效率、生成灵感、以及帮助完成复杂的写作任务方面表现得越来越出色。以下是五款免费且好用的AI写作软件&#xff0c;它们能够帮助你快速进行写作&#xff0c;无论是博客文章、市…

面试官:为什么 Redis 6.0 之后引入多线程?

大家好&#xff0c;我是大明哥&#xff0c;一个专注「死磕 Java」系列创作的硬核程序员。 回答 Redis 的性能瓶颈从来都不是 CPU&#xff0c;是网络I/O 和内存。 内存好解决&#xff0c;加机器内存和优化数据结构。 网路 I/O 的优化才是大头&#xff0c;因为读写网络的 read…