python单元测试框架pytest介绍

2023-12-19

pytest是python语言中一款强大的单元测试框架,用来管理和组织测试用例,可应用在单元测试、自动化测试工作中。

unittest也是python语言中一款单元测试框架,但是功能有限,没有pytest灵活。

就像:苹果电脑mac air和mac pro一样。都是具备同样的功能,但是好用,和更好用。

本文包含以下几个内容点:

  • 1)pytest的简单示例
  • 2)pytest的安装
  • 3)pytest的特征、与unittest的区别。
  • 4) pytest如何自动识别用例。
  • 5)pytest框架中,用例的运行顺序。

1)pytest写用例很简单

下面是一个简单的例子:

1

2

3

4

import random

def test_demo():

assert 7 = = random.randint( 0 , 10 )

运行结果如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

============================= test session starts =============================

platform win32 -- Python 3.7.2, pytest-4.6.3, py-1.8.0, pluggy-0.12.0

rootdir: D:\Pychram-Workspace\STUDY_PYTEST

plugins: allure-pytest-2.6.5, html-1.21.1, metadata-1.8.0, rerunfailures-7.0collected 1 item

simple.py F

simple.py:10 (test_demo)

7 != 6

Expected :6

Actual   :7

========================== 1 failed in 0.14 seconds ===========================

2)pytest的安装

安装命令:

1

pip install pytest

3)pytest的特征、与unittest的区别。

pytest的特征如下:

  • 3.1 自动识别测试用例。(unittest当中,需要引入TestSuite,主动加载测试用例。)
  • 3.2 简单的断言表达:assert表达式即可。(unittest当中,self.assert*)
  • 3.3 有测试会话、测试模块、测试类、测试函数级别的fixture。(unittest当中是测试类、测试函数级别的fixture)
  • 3.4有非常丰富的插件,目前在600+,比如allure插件。(unittest无)
  • 3.5测试用例不需要封装在测试类当中。(unittest中需要自定义类并继承TestCase)

那么pytest是如何自动识别测试用例的呢?我们在编写pytest用例的时候,需要遵守哪些规则呢?

4) pytest如何自动识别用例

识别规则如下:

1、搜索根目录:默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,则从哪个目录当中搜索;

2、搜索规则:

1)搜索文件:符合命名规则 test_*.py 或者 *_test.py 的文件

2)在满足1)的文件中识别用例的规则:

  • 2.1)以test_开头的函数名;
  • 2.2)以Test开头的测试类(没有__init__函数)当中,以test_开头的函数

示例:在D:\pycharm_workspace目录下,创建一个python工程,名为study_pytest。在工程下,创建一个python包,包名为TestCases。

在包当中,创建一个测试用例文件:test_sample_1.py。文件内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#!/usr/bin/python3

# -*- coding: utf-8 -*-

# 定义py文件下的测试用例

def test_sample():

print ( "我是测试用例!" )

class TestSample:

def test_ss( self ):

print ( "我也是测试用例!" )

def hello_pytest( self ):

print ( "hi,pytest,我不是用例哦!!" )

按照上面定义的搜索规则,需要跳转到工程目录,然后再执行命令: pytest -v 。 执行结果如下:

让我们愉快的加进来第2个测试文件:test_sample_2.py,内容如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

#!/usr/bin/python3

# -*- coding: utf-8 -*-

def add(a, * args):

sum = a

for item in args:

sum + = item

return sum

def test_add_two_number():

assert 33 = = add( 11 , 22 )

assert 55.55 = = add( 22.22 , 33.33 )

def test_add_three_number():

assert 101 = = add( 10 , 90 , 1 )

再次运行命令: pytest -v 得到如下结果:

通过多个用例文件的执行,可以看出用例的执行顺序。

5) pytest中用例的执行顺序

原则:先搜索到的py文件中的用例,先执行。在同一py文件当中,按照代码顺序,先搜索到的用例先执行。

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你! 【100%无套路免费领取】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python单元测试框架pytest介绍 的相关文章

随机推荐

  • kali更新命令!获取最新版本Kali Linux

    Kali Linux 是一个基于 Debian 的 Linux 发行版 包含各种独特且简化的实用程序 可提高渗透测试的准确性 速度和易用性 从表面上看 Kali 似乎与任何其他操作系统完全相同 它播放音频和文本文件 运行 Windows 和
  • 怎么用python画一个皮卡丘,用python画皮卡丘的代码

    大家好 小编来为大家解答以下问题 怎么用python画一个皮卡丘 用python画皮卡丘的代码 今天让我们一起来看看吧 给大家看看我的皮卡丘 电脑屏幕比较小 所以看不见假皮卡丘真实的身体 话不说上代码 import turtle as t
  • 课题立项查询怎么查 快码论文

    大家好 今天来聊聊课题立项查询怎么查 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 课题立项查询怎么查 在学术研究和项目申请中 了解课题立项信息对于研究者来说非常重要 快码写作 那么 课题
  • 持续集成交付CICD:K8S 自动化完成前端项目应用发布与回滚

    目录 一 实验 1 环境 2 GitLab新建项目存放K8S部署文件 3 Jenkins手动测试前端项目CD 流水线代码 下载部署文件 4 将K8S master节点配置为jenkins从节点 5 K8S 手动回滚前端项目版本 6 Jenk
  • 《LeetCode力扣练习》代码随想录——双指针法(替换数字---Java)

    LeetCode力扣练习 代码随想录 双指针法 替换数字 Java 刷题思路来源于 代码随想录 54 替换数字 受制于语言限制 普通解法 import java util Scanner class Main public static v
  • Set系列集合

    Set系列集系概述 Set系列集合特点 无序 存取顺序不一致 不重复 可以去除重复 无索引 没有带索引的方法 所以不能使用普通for循环遍历 也不能通过索引来获取元素 Set集合的功能上基本上与Collection的API一致 Set集合实
  • 想学习了解渗透测试?看完这一篇就够了

    一 什么是渗透测试 渗透测试 也称为笔测试 是针对计算机系统的模拟网络攻击 以检查可利用的漏洞 在这样的背景下Web 应用程序安全性方面 渗透测试通常用于增强 Web 应用程序防火墙 WAF 笔测试可能涉及尝试破坏任意数量的应用程序系统 例
  • 【功能更新】支持文档合并导出PDF/HTML格式;线上文章SEO设置能力优化

    HelpLook 功能更新速览 文档管理能力 1 导出支持多篇文档合在一个HTML文件 2 支持下载附件时保留原始文件名 3 主页 推荐文章 支持添加外链 4 文章URL根据标题自动生成 5 文章支持添加 作者 6 博客模版支持置顶文章 1
  • python打包exe failed to execute,python打包成exe 用不了

    本篇文章给大家谈谈python打包的exe有的电脑不能运行 以及python文件打包成exe文件运行报错 希望对各位有所帮助 不要忘了收藏本站喔 大家好 给大家分享一下一个有趣的事情 很多人还不知道这一点 下面详细解释一下 python t
  • Windows7系统ntoskrnl.exe文件丢失问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库 这时你可以下载这个ntoskrn
  • Python Plotly交互可视化详解

    今天给大家分享一篇可视化干货 介绍的是功能强大的开源 Python 绘图库 Plotly 教你如何用超简单的 甚至只要一行 代码 绘制出更棒的图表 沉没成本谬误 是人们常犯的几种认知偏差之一 由于在某件事上已经投入了 沉没 太多的成本 即使
  • 论文查重率太低怎么改能高一点 papergpt

    大家好 今天来聊聊论文查重率太低怎么改能高一点 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 论文查重率太低怎么改能高一点 在撰写论文时 有时会遇到查重率过低的问题 智能写作 这通常是因为
  • App(Android)ICP备案号查询——————高仿微信

    个人主页 拉莫帅 CSDN博客 博文 132篇 原创 130篇 转载 2篇 总阅读量 388923 粉丝量 112 感谢点赞和关注 每天进步一点点 加油 目录 工业和信息化部关于开展移动互联网应用程序备案工作的通知 1 前言 2 备案收费
  • 神州信息戴可分享金融数字化转型破局之道

    近日 第二十届中国国际金融论坛在中国上海拉开帷幕 在 金融科技赋能服务数字经济发展 为主题的平行论坛上 神州信息副总裁戴可发表 基于数云融合的AI Bank 的主题演讲 分享了公司在金融数字化转型方面的最新进展 全面阐释了 数云融合 如何助
  • 论文降重助手同义词替换 papergpt

    大家好 今天来聊聊论文降重助手同义词替换 希望能给大家提供一点参考 以下是针对论文重复率高的情况 提供一些修改建议和技巧 可以借助此类工具 标题 论文降重助手 同义词替换的妙用 一 引言 在论文写作过程中 我们常常会遇到重复内容的问题 为了
  • 病案管理的定义、流程及应用分析

    病案管理是指针对病人的基本信息 病历 就诊记录等进行收集 整理 存储 分析和应用的一项管理工作 它在医院 医疗机构和医疗行业中具有重要的作用 能够提高医疗服务的质量 效率和安全性 本文将就病案管理的定义 流程以及其在医疗健康领域中的应用进行
  • WarAgent使用多智能体理解人类历史和预防未来国际冲突

    我们能否避免历史十字路口上的战争 这个问题已经被个人 学者 政策制定者和组织在人类历史中追寻了很长时间 在这项研究中 我们尝试根据人工智能 AI 和大型语言模型 LLM 的最新进展来回答这个问题 本文试图通过使用人工智能和大型语言模型 回答
  • [黑马程序员TypeScript笔记]------一篇就够了

    文章目录 1 TypeScript 介绍 TypeScript 是什么 TypeScript 为什么要为 JS 添加类型支持 TypeScript 相比 JS 的优势 2 TypeScript 初体验 安装编译 TS 的工具包
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring的AOP前奏

    第一章 AOP前奏 1 1 代理模式 代理模式 我们需要做一件事情 又不期望自己亲力亲为 此时 可以找一个代理 中介 我们 目标对象 与中介 代理对象 不能相互转换 因为是 兄弟 关系 1 2 为什么需要代理 程序中 需求 实现 加减乘除
  • python单元测试框架pytest介绍

    pytest是python语言中一款强大的单元测试框架 用来管理和组织测试用例 可应用在单元测试 自动化测试工作中 unittest也是python语言中一款单元测试框架 但是功能有限 没有pytest灵活 就像 苹果电脑mac air和m