pytest - Getting Start

news2024/11/28 8:29:03

前言

项目开发中有很多的功能,通常开发人员需要对自己编写的代码进行自测,除了借助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

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

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

相关文章

虚幻图文笔记:Substance Painter通过USD格式导入UE5的工作流

什么是USD格式 USD即Universal Scene Description,是著名的Pixar公司研发的一种开源的3D 场景说明和文件格式,如其名所示,相较于传统的FBX、Obj等3D格式,USD的具有更好的通用性和扩展性,现在已被非常多的厂商和平台所…

使用树莓派(zero2w + Camera Module 3 支持自动对焦 1200 万像素)拍照

拍照硬件 Raspberry Pi Camera Module 3Raspberry Pi Zero 2 W 1. 注意排线连接方向 2. 烧录系统 3. 进行系统更新需要联网,注意只支持最新的bullseye系统。每条指令大概需要10 分钟。 sudo apt-get update -y sudo apt-get upgrade -y4. 拍摄一张全像素的JPEG图像…

自己做小程序开个社区团购可行吗?

在如今的社交化时代,随着社区经济的发展,越来越多的人开始探索社区团购的商业模式。而随着小程序的普及,自己开发一个社区团购小程序也成为了一种可能。但是,自己做小程序开个社区团购真的可行吗?我们来一起分析一下。…

Spring整合MybatisJunit单元测试

Spring整合Mybatis&Junit单元测试 1. Spring整合Mybatis【重点】1.1 思路分析问题导入1.1.1 MyBatis程序核心对象分析1.1.2 整合MyBatis 1.2 代码实现【前置工作】【第一步】导入Spring整合Mybatis依赖【第二步】创建JdbcConfig配置DataSource数据源【第三步】创建MybatisC…

【ARMv8 编程】A64 内存访问指令——内存加载指令

与所有先前的 ARM 处理器一样,ARMv8 架构是一种加载/存储架构。这意味着没有数据处理指令直接对内存中的数据进行操作。数据必须首先被加载到寄存器中,修改,然后存储到内存中。该程序必须指定地址、要传输的数据大小以及源或目标寄存器。有额…

《使用深度神经网络对光电容积脉搏图进行归一化,以进行个体和群体比较》阅读笔记

目录 一、论文摘要 二、论文十问 Q1:论文试图解决什么问题? Q2:这是否是一个新的问题? Q3:这篇文章要验证一个什么科学假设? Q4:有哪些相关研究?如何归类?谁是这一…

symfonos 1(smtp注入webshell,配合文件文件包含)

目录 扫描 SMB 提权 扫描 SMB 让我们使用SMBMAP检查这些目录的权限。 smbmap -d workgroup -H www.example.com 可能/匿名帐户可访问。 使用smb尝试连接共享网络以访问/anonymous目录。[smb://192.168.59。129/]

ETL工具 - Kettle 介绍及基本使用

一、Kettle 介绍 在介绍 Kettle 前先了解下什么是 ETL,ETL是 Extract-Transform-Load 的缩写,即数据 抽取、转换、装载 的过程,对于企业或行业应用来说,经常会遇到各种异构数据的处理、转换、迁移等操作,这些操作有可…

java+mysql医院住院挂号缴费病房信息管理系统

手续办理:办理病人入院登记;提供病案首页建立与打印;交纳预交金及日结管理,并打印收据凭证;空床查询与统计;查询患者的住院信息;打印清单;出入院统计。 护士工作站:提供病…

Java每日一练(20230429)

目录 1. 二叉树的后序遍历 🌟🌟 2. 删除无效的括号 🌟🌟🌟 3. 合并两个有序链表 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每…

【Java笔试强训 1】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🦾🦾🦾 目录 一、选择题 二、编程题 🔥组队竞…

基于虚拟同步发电机的光伏混合储能并网系统MATLAB仿真

资源地址: 主要模块: 光伏电池模型(按照数学模型搭建)、蓄电池储能模块、超级电容储能模块、双向DC/DC模块、LC滤波器、逆变器VSG控制模块电压电流双环控制模块、光伏MPPT控制模块、储能系统充放电控制模块。 使用MATLAB2021b及…

2023/04/24 ~ 25 刷题记录

A - Sort the Subarray 大致题义&#xff1a;Monocarp有一个包含n个整数的数组a。他决定选择两个整数l和r&#xff0c;使1< 2rn&#xff0c;然后对子数组进行排序。子数组a[1 ..]R]是数组a中包含元素a1, al1, al2&#xff0c;…的部分。&#xff0c; ar-1, ar)按非降序排列。…

【STM32】知识补充 锁相环原理与应用解析

【STM32】知识补充 锁相环原理与应用解析 概述什么是锁相环 (PPL)锁相环的基本组成锁相环的工作原理锁相环应用STM32 中锁相环的应用STM32 配置锁相环总结 概述 锁相环 (Phase-Locked Loop) 在现代电子与通信系统中, 扮演着至关重要的角色. 凭借其独特的同步和频率调整能力, 锁…

大数据Doris(七):BE扩缩容

文章目录 BE扩缩容 一、BE扩容(创建BE与FE关系) 二、BE缩容 三、BE扩缩容注意问题

【操作系统复习】第5章 存储器管理 2

分页存储管理方式 页号P ◆12-31位&#xff1a;20位 ◆地址空间最多允许有1M&#xff08;2 20&#xff09;页 位移量W&#xff08;页内地址&#xff09; ◆0-11&#xff1a;12位 ◆每页大小为4KB &#xff08;2 12&#xff09; 对某特定机器&#xff0c;地址结构是一…

LangChain 2 ONgDB:大模型+知识图谱实现领域知识问答

LangChain 2 ONgDB&#xff1a;大模型知识图谱实现领域知识问答 LangChain 2 ONgDB&#xff1a;大模型知识图谱实现领域知识问答系统截图LangChain代理流程 Here’s the table of contents: LangChain 2 ONgDB&#xff1a;大模型知识图谱实现领域知识问答 LangChain 是一种 LL…

社区团购小程序怎么做,全流程解析

在当前的电商市场中&#xff0c;社区团购已经成为了一股强劲的力量。社区团购小程序作为社区团购的重要组成部分&#xff0c;已经成为了商家和消费者不可或缺的工具。社区团购小程序以其方便、快捷、实惠的特点&#xff0c;受到越来越多的用户的青睐&#xff0c;成为了电商市场…

只需5分钟,深刻理解本地事务状态表方案|分布式事务系列(四)

之前我们已经讲过了最基础的CAP、BASE理论&#xff0c;然后介绍了强一致性方案XA、2PC和3PC&#xff0c;然后详细讲述了TCC在生产中的应用场景和原理。本文继续讲解最终一致性方案——本地事务状态表方案。 点击上方“后端开发技术”&#xff0c;选择“设为星标” &#xff0c;…

Go基础篇:类型系统

目录 前言✨一、什么是类型&#xff1f;二、类型特性1、静态类型检查2、类型推断 三、类型别名和自定义类型1、类型别名2、自定义类型3、类型别名和自定义类型的区别 四、类型底层结构1、类型元数据2、其他描述信息3、uncommontype 五、小结 前言✨ 前段时间忙着春招面试&#…