Python 测试框架 Pytest 的入门


 简介

pytest 是一个功能强大而易于使用的 Python 测试框架。它提供了简单的语法和灵活的功能,用于编写和组织测试代码。

1、简单易用:pytest 的语法简洁明了,使得编写测试用例更加直观和易于理解。它使用 assert 语句来验证预期结果,让测试代码更加简洁易读。

2、自动发现测试:pytest 能够自动发现并执行测试文件和测试函数。它遵循命名规则(以 “test_” 开头的文件和函数)来查找测试用例,无需手动指定。

3、丰富的断言支持:pytest 提供了丰富的断言函数,用于比较、验证预期结果和实际结果是否一致。这使得编写断言更加简单和直观。

4、夹具 (fixture):夹具是 pytest 的一个强大功能,用于在测试用例之前和之后执行一些准备和清理操作。夹具可以帮助创建模拟对象、设置测试环境、共享资源等。

5、参数化测试:pytest 支持参数化测试,允许使用不同的输入参数运行同一个测试用例。这可以大大减少编写重复测试代码的工作量。

6、插件系统:pytest 提供了丰富的插件生态系统,可以扩展其功能。可以使用插件来增强测试报告、生成覆盖率报告、集成其他测试工具等。

7、与其他测试框架的兼容性:pytest 可以与其他流行的测试框架(例如 unittest)兼容,因此可以逐步迁移现有的测试代码到 pytest。

pytest 安装

安装 pytest首先,确保已经安装了 Python,并使用 pip 包管理器安装 pytest。
打开终端并输入以下命令:

pip install pytest

验证安装结果:

pytest --version

在这里插入图片描述

pytest执行

步骤 1:

创建测试文件在项目文件夹中,创建一个以 “test_” 开头的 Python 文件,注意:测试文件名要符合test_.py或_test.py格式(例如 “test_calculator.py”)

步骤 2:

编写测试用例在测试文件中,可以定义一个或多个测试函数,每个函数对应一个测试用例。

# test_calculator.py

def test_addition():
    assert 2 + 2 == 4

def test_subtraction():
    assert 5 - 3 == 2

def test_multiplication():
    assert 3 * 4 == 12

def test_division():
    assert 10 / 2 == 5

在每个测试函数中,使用关键字 assert 来判断预期结果与实际结果是否一致。如果断言失败,pytest 将显示错误信息,并将测试标记为失败。

步骤 3:

运行测试在终端中,切换到项目文件夹,并运行以下命令来执行测试:

pytest

pytest 将自动发现并运行测试文件。将看到一份测试结果报告,其中包含每个测试用例的状态(通过、失败或跳过)以及详细的错误信息(如果有的话)。

步骤 4:

使用命令行选项pytest 提供了许多命令行选项,以便可以根据需要自定义测试运行。以下是一些常用的选项:

运行特定目录下的测试文件:

pytest path/to/tests

运行特定测试文件中的某个测试函数:

pytest path/to/tests/test_module.py::test_function

显示详细的打印输出:

pytest -s

生成 JUnit XML 报告:

pytest --junitxml=path/to/report.xml

以上只是 pytest 的一些基本用法。pytest 还具有更高级的功能,例如参数化测试、夹具 (fixture)、测试覆盖率等等。之后会进一步分享,点个赞给小编更多动力。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

Java进阶(第二期):package 包 抽象类和抽象方法 接口的实现 多态的实现 综合继承、接口、多态的使用。

2023年11月26日20:11:11 文章目录 Java进阶(第二期)一、package包的概念二、抽象类和抽象方法(abstract)2.1 使用2.1 抽象类注意事项 三、接口3.1 接口的定义格式3.2 接口成员特点3.3 类和接口的关系3.4 接口和抽象类的对比 四、多态4.1 多态的前提条件4…

4G模块(EC600N)通过MQTT连接华为云

目录 一、前言 二、EC600N模块使用 1.透传模式 2.非透传模式 3、华为云的MQTT使用教程: 三、具体连接步骤 1、初始化检测 2、打开MQTT客户端网络 3、创建产品 4、创建模型 5、注册设备 6、连接客户端到MQTT服务器 7、发布主题消…

2023-11-26 事业-代号s-跨境物流-记录

摘要: 2023-11-26 事业-代号s-跨境物流-记录 跨境物流: 【结论】 中小卖家(最低适合1个人经营的卖家)首选以下两种物流,目前已知的是以下两种,后续有新的发现再更新。 1、云途物流(YunExpress)&#xff…

2016年五一杯数学建模A题购房中的数学问题解题全过程文档及程序(采光与房款)

2016年五一杯数学建模 A题 购房中的数学问题 原题再现 随着现代社会经济的快速发展,房地产成为国家经济发展中重要的经济增长点之一。为了充分利用楼房建设的土地面积,开发商经常会选择建筑高层住宅。在购买住房时,影响消费者选择购房的因素…

企业文档文件管理软件推荐:提升管理效率与数据安全性

Zoho WorkDrive企业网盘是一种高效的文件管理工具,它不仅可以为组织搭建统一、高效、安全、智能的内容管理体系,还能够提供大规模支撑、海量数据处理、非结构化数据治理、智能挖掘与洞察等服务能力。通过这些服务,企业可以更好地管理和利用其…

Linux 面试题(一)

目录 1、绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 2、怎么查看当前进程?怎么执行退出?怎么查看当前路径? 3、怎么清屏?怎么退出当前命…

更改MacBook壁纸,有时可以带来不一样的感觉,特别是动态壁纸

在我看来,买一台新的MacBook最棒的部分就是挑选一张完美的桌面壁纸,为我的新工作伙伴定下基调。有时,在真正更换壁纸之前,我会花一整天的时间,仔细决定我的新笔记本电脑到底是什么样子,而且由于Macbook如此…

使用项目管理工具进行新媒体运营管理的策略与方法

使用Zoho Projects项目管理工具,新媒体运营可轻松驾驭从策划选题、撰写到排期发布的全流程。运用项目管理工具对新媒体运营进行精细化管理,助力团队更高效地规划、执行和追踪各项任务与活动。 以下是运用项目管理工具管理新媒体运营的妙招: 1…

软件测试面试题之如何进行项目介绍

邯郸网上银行系统旨在为企业搭建安全便捷的账户管理,资金汇化及投资服务通道,提升企业财富与价值增值它主要包含首页、我的账户、信用卡、邮储业务、投资理财、转账汇款、个人贷款等模块。 个人贷款一般有抵押贷款,和信用贷等,房…

【算法萌新闯力扣】:回文链表

力扣题目:回文链表 开篇 今天是备战蓝桥杯的第23天。我加入的编程导航算法通关村也在今天开营啦!那从现在起,我的算法题更新会按照算法村的给的路线更新,更加系统。大家也可以关注我新开的专栏“算法通关村”。里面会有更全面的知…

IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8?(已解决)

文章目录 前言分析解决方案一:替换创建项目的源方案二:升级JDK版本 参考文献 前言 起因 想创建一个springboot的项目,本地安装的是1.8,但是在使用Spring Initializr创建项目时,发现版本只有17和21。 在JDK为1.8的情况下…

岁月随笔-穿拖鞋的汉子

时间如白驹过隙般,转眼间2023年也只剩下最后的40天。汉子我拿出年初自己定的目标,立下的Flag,恍恍惚若昨天发生,不禁让人感慨万千。 其实最近自己遇到了很大的困惑,也导致了断更了一个月。自己逐渐摸不清自己的定位啦…

由走“贸工技”的联想联想到传统OEM,带给了自己那些思考?

2022年1月16日,自己来到魔都的第1597天,这城市还是保持着相似的容颜,而自己却悄悄的起了变化。 以前对时间概念其实不是特别敏感,感觉自己有大把的时光可以浪费(虽然知道死亡是个永远无法逃避的话题)&#…

Flink-简介与基础

Flink-简介与基础 一、Flink起源二、Flink数据处理模式1.批处理2.流处理3.Flink流批一体处理 三、Flink架构1.Flink集群2.Flink Program3.JobManager4.TaskManager 四、Flink应用程序五、Flink高级特性1.时间流(Time)和窗口(Window&#xff0…

Oracle 中的操作符

1.union:对两个结果集进行并集操作&#xff0c;不包括重复行&#xff0c;同时进行默认规则的排序&#xff1b; SELECT * FROM emp WHERE sal < 1500 UNION SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000 order by 1 2.union All&#xff1a;对两个结果集进行并集操…

WebSocket协议测试实战

当涉及到WebSocket协议测试时&#xff0c;有几个关键方面需要考虑。在本文中&#xff0c;我们将探讨如何使用Python编写WebSocket测试&#xff0c;并使用一些常见的工具和库来简化测试过程。 1、什么是WebSocket协议&#xff1f; WebSocket是一种在客户端和服务器之间提供双向…

Prove that exponential function f(x)=e^x is not Lipschitz on R

https://math.stackexchange.com/questions/3980014/prove-that-ex-is-not-lipschitz-on-r https://math.ucr.edu/~res/math205A-2014/lipschitz2.pdf

大模型三阶段训练

为了训练专有领域模型&#xff0c;选择LLaMA2-7B作为基座模型&#xff0c;由于LLaMA模型中文词表有限&#xff0c;因此首先进行中文词表的扩展&#xff0c;然后进行三阶段训练&#xff08;增量预训练&#xff0c;有监督微调&#xff0c;强化学习&#xff09;。 代码将全部上传…

从0到1建立前端规范

本文适合打算建立前端规范的小伙伴阅读 一、为什么需要规范 规范能给我们带来什么好处&#xff0c;如果没有规范会造成什么后果&#xff1f;这里主要拿代码规范来说。 统一代码规范的好处&#xff1a; 提高代码整体的可读性、可维护性、可复用性、可移植性和可靠性&#xf…