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

news2024/11/24 2:20:12

文章目录

  • 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):
        pass

    def test_1(self):
        assert 1==1

    def 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 == 1
        assert 1 != 2
        assert  1 < 2
        assert  2 > 1
        assert  3 >= 3
        assert 3 <= 3
        assert  "a" in "abc"
        assert "a" not in "xxx"
        e = [1, 2, 3]
        f = e
        g = [2, 3, 4]
        assert e is f
        assert g is not f

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

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

相关文章

虚拟化数据恢复—虚拟机误还原几年前的快照怎么恢复数据?

虚拟化技术原理是将硬件虚拟化供不同的虚拟机使用&#xff0c;一台物理机上可以有多台虚拟机。人为误操作或者物理机故障会导致上层虚拟机不可用&#xff0c;甚至虚拟机里的重要数据丢失。下面给大家分享一个vmware虚拟化误操作还原快照的数据恢复案例。 虚拟化数据恢复环境&am…

基于GPT3打造你的专属的个人知识库

DocsGPT是一个基于GPT3的知识库平台&#xff0c;其支持训练、本地部署&#xff0c;并支持结果导出 https://github.com/arc53/DocsGPT DocsGPT本地部署 前置依赖&#xff1a; pippython3.8版本以上&#xff08;python3.7不支持langchain 0.0.100以上版本&#xff09;如使用ma…

【原理图PCB专题】案例:Cadence能设计一个没有管脚的器件吗?

在工作中突发奇想,如果Capture原理图中设计一个没有管脚的器件是不是可行?比如说有一些logo,如果在PCB绘制或完成时进行放置,那又怕会忘记。如果说在原理图就能放置,那么导入PCB后就可以直接变成器件的形式,是否就能完美的从设计上解决这个忘记放置的问题? 因此做一个案…

走进低代码表单开发(一):可视化表单数据源设计

在前文&#xff0c;我们已对勤研低代码平台的报表功能做了详细介绍。接下来&#xff0c;让我们深入探究低代码开发中最为常用的表单设计功能。一个完整的应用是由众多表单组合而成的&#xff0c;所以高效的表单设计在开发过程中起着至关重要的作用。让我们一同了解勤研低代码开…

从“N 号房”看Deepfake乱象,如何证明“我”不是我?

从“N 号房”看Deepfake乱象&#xff0c;如何证明“我”不是我&#xff1f; “9张玛丽莲梦露的照片里&#xff0c;有2张是AIGC伪造的&#xff0c;你能看出来哪张是假的吗&#xff1f;” 这是出现在外滩大会AI创新赛全球Deepfake攻防挑战赛的表演赛上激动人心的一刻。9月6日下…

[SC]Windows VS2022下配置SystemC环境

Windows VS2022下配置SystemC环境 一、安装Visual Studio 2022 下载地址&#xff1a;Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 进入Visual Studio Installer后选择“通用Windows平台开发”并勾选“可选”中的“通用Windows平台工具”。 二、下…

在Application中全局获取context

首先自定义一个application&#xff0c;继承Application&#xff0c;并在AndroidManifest.xml文件中配置它。 class TvApplication : Application() {companion object {Volatilevar context: Application? nullprivate setfun getContext(): Context {return context ?: t…

[笔记]电参数测量的现有方案[进行中...]

1.关键字&#xff1a; 电参数测量 Electrical Parameter Measurement 2.相关信息搜集 》》电参数测量仪是如何测量电压电流相位差的&#xff1f;对于变频器那种比较毛的波形&#xff0c;也能测量&#xff1f; 电参数测量仪测量电压电流相位差的方法主要依赖于其内部的高精度…

喜报!大模型助力产业升级,卓翼智能荣获科大讯飞AI开发者大赛冠军

8月9日&#xff0c;科大讯飞AI开发者大赛专场路演圆满落幕&#xff0c;这是一个面向全球开发者的人工智能竞赛平台。经过激烈角逐&#xff0c;《大模型助力下的航空航天产业转型升级赛道》最终有8支队伍进入决赛&#xff0c;专业评委从项目可行性、功能完备程度、创新性、商业价…

复仇时刻 华为的狙击还没结束

文&#xff5c;琥珀食酒社 作者 | 积溪 华为的复仇时刻已到啊 名场面即将再次上演 看过华为和苹果发布会的人 应该都有似曾相识的感觉 去年8月底 雷女士访华第二天 华为发布了Mate 60先锋计划 9月13日苹果发布iPhone 15 恰恰就在这天 华为咔嚓一下 又放出了大折叠屏…

用Python爬虫制作一个简易翻译器

我们通常是通过requestsBS4的方法来获取网页内容&#xff0c;这种方法导入模块较多&#xff0c;速度相对有点儿慢&#xff0c;此时我们可以用requests的post方法向指定服务器发送请求&#xff0c;获取数据后格式化为json&#xff0c;然后获取相关键值。这种方法用到了requests和…

电脑系统找不到mfc100u.dll,无法继续执行代码的多种解决方法

当你试图打开某些应用程序或游戏时&#xff0c;可能会收到“mfc100u.dll文件丢失”的错误消息。这个错误通常会使应用程序或游戏无法正常启动。以下关于mfc100u.dll丢失的解决方法的一些分析。 一.什么是mfc100u.dll文件 mfc100u.dll是Microsoft Visual Studio 2010应用程序使…

通过API使用通义千问

1. 获取API-KEY 开通百炼服务并获得API-KEY 登录阿里云百炼大模型服务平台。 鼠标悬停于页面右上角的个人中心&#xff08;人性标志&#xff09;上&#xff0c;再在下拉菜单中单击API-KEY。 在左侧导航栏&#xff0c;选择全部API-KEY或我的API-KEY。&#xff08;说明&#x…

BEV学习---LSS-2

前言一、相关参数设置二、LSS算法前向过程 1.整体步骤2.创建视锥3.坐标变换4.视锥点云特征5.VoxelPooling 5.1 cumsum_trick(池化累积求和技巧):5.2 VoxelPooling总结 前言 目前在自动驾驶领域&#xff0c;比较火的一类研究方向是基于采集到的环视图像信息去构建BEV视角下的特征…

Mysql基础练习题 1527.患某种疾病的患者 (力扣)

查询患有 I 类糖尿病的患者 ID &#xff08;patient_id&#xff09;、患者姓名&#xff08;patient_name&#xff09;以及其患有的所有疾病代码&#xff08;conditions&#xff09;。I 类糖尿病的代码总是包含前缀 DIAB1 。 题目链接&#xff1a; https://leetcode.cn/proble…

【JS逆向学习】快乐学堂登陆接口(自定义DES加密、ddddocr验证码识别)

逆向目标 网址&#xff1a;https://www.91118.com/Passport/Account/Login接口&#xff1a;https://www.91118.com/passport/Account/LoginPost参数&#xff1a; passr 逆向过程 输入手机号、密码、验证码 点击登陆&#xff0c;多试几次&#xff0c;然后观察并比较不通请求…

具有RC反馈电路的正弦波振荡器(文氏桥振荡器+相移振荡器+双T振荡器)

2024-9-10&#xff0c;星期二&#xff0c;22:13&#xff0c;天气&#xff1a;雨&#xff0c;心情&#xff1a;晴。今天从下午开始淅淅沥沥一直在下雨&#xff0c;还好我有先见之明没骑自行车&#xff0c;但是我忘带伞了&#xff0c;属于说是有点脑子但是不多了&#xff0c;2333…

通信八股总结for普联

一.信息论 1.香农公式 1.1 香农公式的内容 &#xff1a;信道容量(bps) &#xff1a;信道带宽(Hz) &#xff1a;信噪比&#xff08;dB&#xff09;。 1.2 香农公式的意义 揭示了在有噪声的通信信道中&#xff0c;信息传输速率的理论上限。 可以通过改进编码或者调制技术来…

gradle 学习备忘

所学版本&#xff1a; Gradle User Manualhttps://docs.gradle.org/8.7/userguide/userguide.html?_gl1*1f2c50b*_gcl_au*NzQ2ODAwODgxLjE3MjMzNjI5Mzk.*_ga*NDY3MDM0MDIzLjE3MjMzNjI5NDA.*_ga_7W7NC6YNPT*MTcyNTk3NTU3OC4yLjEuMTcyNTk3NTY0MC42MC4wLjA. Android 官网文档&am…

第十九次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…