pytest - Getting Start

前言

项目开发中有很多的功能,通常开发人员需要对自己编写的代码进行自测,除了借助postman等工具进行测试外,还需要编写单元测试对开发的代码进行测试,通过单元测试来判断代码是否能够实现需求,本文介绍的pytest模块是一个非常好用的框架,不仅支持简单的测试也支持应用中复杂的功能测试。

pytest简介

这里引用pytest官方文档中的内容:pytest is a mature full-featured Python testing tool that helps you write better programs.

Getting start

pytest安装

pytest的运行环境是:python3.6 3.7 3.8 3.9 pypy3.在命令行中运行下述命令安装pytest

pip install pytest

安装完成之后运行下述命令检查是否安装成功:

pytest --version
pytest 6.2.4

第一个测试

可以通过四行代码为一个函数创建简单的测试。

# test.py
def func(x):
    return x+1


def test_answer():
    assert func(5) == 7

下面就可以执行pytest命令来测试功能。

100%是指运行所有测试用例的整体进度,完成之后,pytest会显示一个失败报告,指出具体错误原因。pytest可以指定文件进行测试,更多的时候pytest会运行当前目录和子目录中的所有test_*.py或者*_test.py形式的文件。

在类中进行多个测试

如果编写了多个测试用例,可以将多个测试用例放在同一个类中,但是需要确保类型的前缀是Test,否则将会被pytest跳过。

class TestDemo:

    def test_one(self):
        x = 'this'
        assert 'h' in x

    def test_two(self):
        x = 'hello'
        assert hasattr(x, 'check')

下面是使用pytest执行测试的结果,在类中编写测试需要注意两点:第一,类名必须有Test前缀,第二,在使用类进行测试时不需要实例化对象,pytest会自动找到test_前缀的方法执行。

Usage and Invocations

Exit codes

不晓得有没有细心的小伙伴发现没有,在使用pycharm运行完成一段程序后,会显示Process finished with exit code 0,表示程序正常运行完毕了,在运行pytest时也会出现exit code,并且可能会出现大概6种不同的exit code

exit code 0:所有的测试都已经收集并且成功通过

exit code 1:收集并运行了测试,但是有些测试失败了

exit code 2:测试执行过程中被打断

exit code 3:执行测试时发生内部错误

exit code 4:pytest命令使用错误

exit code 5:没有收集测试

终止测试

pytest运行时可以通过命令控制在出现一个或者N个失败信息时停止继续测试。

pytest -x           # stop after first failure
pytest --maxfail=2  # stop after two failures

指定/选择测试用例

pytest支持多种多方运行和选择测试用例。

测试指定py文件pytest test_mod.py

测试指定目录pytest /usr/local/testing/

通过节点id指定测试:每个被收集的测试都会被分配一个唯一的nodeid,,由模块名、类名、函数名等,每个部分使用::分隔。

运行模块中的指定的测试用例:pytest test_mod.py::test_func
运行类中的某个测试方法:pytest test_mod.py::TestClass::test_method

pytest选项

-r选项可以用于在测试会话结束时显示更加剪短的测试摘要信息,在大型的测试用例中可以非常清晰的获取所有失败、跳过等信息。-r参数可以和下面其他选项结合使用,输出不同的结果信息。

f:失败的
E:错误的
s:跳过的
x:失败的
p:通过的

如仅查看失败和跳过的测试,可以执行:pytest -rfs

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android APK 反编译后重新打包并签名

APKTool: Apktool 是一个逆向android非常有用的工具,可以用来反编译apk文件,并且能在修改部分资源文件后,重新打包成一个新的apk。 下载连接:http://ibotpeaches.github.io/Apktool/install/ 下载之后文件夹非常清爽&…

ChatGPT会颠覆SEO内容创作吗

近几年 AI 的发展日新月异。除了搜索算法本身大规模应用人工智能,我也一直关注着 AI 用于写作的进展。 上篇关于 Google 有用内容更新的帖子还在说,高质量内容创作是 SEO 最难的事之一,对某些网站来说,如果能有工具帮助&#xff…

Mysql 日志

目录 0 课程视频 1 错误日志 -> 默认开启 1.1 查看变量 show variables like %log_error%; 1.2 文件位置 /var/log -> mysqld.log 1.3 指令语法 2 二进制日志 -> 修改数据和数据库结构的日志 2.1 记录原则 2.1.1 记录 数据库创建语句 和 增删改查 2.1.2 不记…

JdbcTemplate常用语句代码示例

目录 JdbcTemplate 需求 官方文档 JdbcTemplate-基本介绍 JdbcTemplate 使用实例 需求说明 创建数据库 spring 和表 monster 创建配置文件 src/jdbc.properties 创建配置文件 src/JdbcTemplate_ioc.xml 创建类JdbcTemplateTest测试是否可以正确得到数据源 配置 J…

智能算法系列之基于粒子群优化的模拟退火算法

文章目录 前言1. 算法结合思路2. 问题场景2.1 Sphere2.2 Himmelblau2.3 Ackley2.4 函数可视化 3. 算法实现代码仓库:IALib[GitHub] 前言 本篇是智能算法(Python复现)专栏的第四篇文章,主要介绍粒子群优化算法与模拟退火算法的结合,以弥补各自…

《基于EPNCC的脉搏信号特征识别与分类研究》阅读笔记

目录 一、论文摘要 二、论文十问 三、论文亮点与不足之处 四、与其他研究的比较 五、实际应用与影响 六、个人思考与启示 参考文献 一、论文摘要 为了快速获取脉搏信号的完整表征信息并验证脉搏信号在相关疾病临床诊断中的敏感性和有效性。在本文中,提出了一…

Ubantu docker学习笔记(八)私有仓库

文章目录 一、建立HTTPS链接1.在仓库服务器上获取TLS证书1.1 生成证书颁发机构证书1.2 生成服务器证书1.3 利用证书运行仓库容器 2.让私有仓库支持HTTPS3.客户端端配置 二、基本身份验证三、对外隐藏仓库服务器3.1 在服务器端3.2 在客户端进行 四、仓库可视化 在前面的学习中&a…

ChatGPT被淘汰了?Auto-GPT到底有多强

大家好,我是可夫小子,关注AIGC、读书和自媒体。解锁更多ChatGPT、AI绘画玩法。 说Auto-GPT淘汰了ChatGPT了,显然是营销文案里面的标题党。毕竟它还是基于ChatGPT的API,某种意义只是基于ChatGPT能力的应用。但最近,Auto…

Nautilus Chain Layer 3 圆桌会议圆满举办,超4.8K用户观看

在4月21日,Nautilus Chain举办了以“Layer 3区块链的意义和发展以及Crypto的演变”为主题的线上圆桌会议,我们邀请了众多行业嘉宾包括GitcoinDAO社区管理者Bob jiang、Whalers Community发起者崔棉大师、Chatpuppy联合创始人 古千峰、Whalers Community核…

机器学习与深度学习——通过决策树算法分类鸢尾花数据集iris求出错误率画出决策树并进行可视化

什么是决策树? 决策树是一种常用的机器学习算法,它可以对数据集进行分类或回归分析。决策树的结构类似于一棵树,由节点和边组成。每个节点代表一个特征或属性,每个边代表一个判断或决策。从根节点开始,根据特征的不同…

vue3的props和defineProps

文章目录 1. Props 声明1.1 props用字符串数组来声明Blog.vueBlogPost.vue 1.2 props使用对象来声明Blog.vueBlogPost.vue 2. 传递 prop 的细节2.1 Prop 名字格式2.1 静态Prop & 动态 Prop静态prop动态prop示例Blog.vueBlogPost.vue 2.3 传递不同的值类型NumberBooleanArra…

基于YOLOv4的目标检测系统(附MATLAB代码+GUI实现)

摘要:本文介绍了一种MATLAB实现的目标检测系统代码,采用 YOLOv4 检测网络作为核心模型,用于训练和检测各种任务下的目标,并在GUI界面中对各种目标检测结果可视化。文章详细介绍了YOLOv4的实现过程,包括算法原理、MATLA…

C++知识点 -- 异常

C知识点 – 异常 文章目录 C知识点 -- 异常一、异常概念二、异常的使用1.异常的抛出和捕获2.异常的重新抛出3.异常安全4.异常规范 三、自定义异常体系四、C标准库的异常体系五、C异常的优缺点 一、异常概念 当一个函数发现自己无法处理错误时,就可以抛出异常&#…

14-3-进程间通信-消息队列

前面提到的管道pipe和fifo是半双工的,在某些场景不能发挥作用; 接下来描述的是消息队列(一种全双工的通信方式); 比如消息队列可以实现两个进程互发消息(不像管道,只能1个进程发消息&#xff…

kali: kali工具-Ettercap

kali工具-Ettercap ettercap工具: 用来进行arp欺骗,可以进行ARP poisoning(arp投毒),除此之外还可以其他功能: ettercap工具的arp投毒可以截取web服务器、FTP服务器账号密码等信息,简略后打印出…

前端学习之使用JavaScript

前情回顾:网页布局 JavaScript 简介 avaScript诞生于1995年,它的出现主要是用于处理网页中的前端验证。所谓的前端验证,就是指检查用户输入的内容是否符合一定的规则。比如:用户名的长度,密码的长度,邮箱的…

SQL中去除重复数据的几种方法,我一次性都告你​

使用SQL对数据进行提取和分析时,我们经常会遇到数据重复的场景,需要我们对数据进行去重后分析。 以某电商公司的销售报表为例,常见的去重方法我们用到distinct 或者group by 语句, 今天介绍一种新的方法,利用窗口函数…

Github 的使用

3. Github 在版本控制系统中,大约90%的操作都是在本地仓库中进行的:暂存,提交,查看状态或者历史记录等等。除此之外,如果仅仅只有你一个人在这个项目里工作,你永远没有机会需要设置一个远程仓库。只有当你…

2001-2021年全国30省就业人数数据

2001-2021年全国30省就业人数数据/各省就业人数数据 1、时间:2001-2021年 2、范围:包括30个省市不含西藏 3、指标:就业人数 4、来源:各省NJ、社会统计NJ 5、缺失情况说明:无缺失 6、指标说明: 就业人…

实在智能出席第六届数字中国建设峰会,入围2022年信息技术应用创新优秀解决方案榜单

最美榕城四月天,山海之间尽显数字澎湃。这一周来,实在智能来到了“有福之州”,为数字中国建设增添实在色彩。 4月25日,实在华夏行抵达福州站,与众多生态合作伙伴携手共话数字发展新未来; 4月26日&#xff…