一篇文章教你Pytest快速入门和基础讲解,一定要看!

news2024/12/26 3:47:41

前言

  • 目前有两种纯测试的测试框架,pytest和unittest
  • unittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口
  • pytest是基于unittest开发的另一款更高级更好用的单元测试框架
  • 出去面试也好,跟别人说起来也好,pytest的逼格明显高于unittest

为什么要用Pytest

pytest 的官方网站介绍,它具有如下特点:

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  2. 能够支持简单的单元测试和复杂的功能测试
  3. 支持参数化
  4. 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败
  5. 支持重复执行(rerun)失败的 case
  6. 支持运行由 nose, unittest 编写的测试 case
  7. 可生成 html 报告
  8. 方便的可持续集成工具 jenkins 集成
  9. 可支持执行部分用例
  10. 具有很多第三方插件,并且可以自定义扩展

安装Pytest

cmd运行

pip install -U pytest

pip3 install pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

查看版本

pytest --version

快速开始

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
__title__  =
__Time__   = 2020-04-06 12:33
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""

def func(x):
    return x + 1


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


class TestClass:
    def test_one(self):
        x = "this"
        assert "h" in x

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

然后,cmd进入当前文件目录,直接执行

pytest

知识点

  • 如果只执行 pytest ,会查找当前目录及其子目录下以 test_*.py 或 *_test.py 文件,找到文件后,在文件中找到以 test 开头函数并执行
  • 如果只想执行某个文件,可以 pytest start.py
  • 加上-q,就是显示简单的结果: pytest -q start.py

Pytest用例的设计原则

用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的

  • 文件名以 test_*.py 文件和*_test.py
  • 以 test_ 开头的函数
  • 以 Test 开头的类,不能包含 __init__ 方法
  • 以 test_ 开头的类里面的方法
  • 所有的包 package 必须要有__init__.py 文件

Pytest执行用例规则

注意,下面讲的都是在cmd中执行pytest命令

1、某个目录下所有的用例

pytest

2、执行某一个 py 文件下用例

pytest 脚本名称.py

3、运行start.py 模块里面的某个函数,或者某个类,某个类里面的方法

加v和不加-v都可以,加-v的话,打印的信息更详细

pytest -v 08_mark.py::TestClass::test_method

pytest 08_mark.py::TestClass::test_method

pytest start.py::test_answer

4、运行start.py 模块里面,测试类里面的某个方法

pytest start.py::TestClass::test_two

5、-m 标记表达式(后续讲解)

pytest -m login

将运行用 @pytest.mark.login 装饰器修饰的所有测试,后面再展开讲标记哦

6、-q 简单打印,只打印测试用例的执行结果

pytest -q start.py

7、-s 详细打印

pytest -s start.py

8、-x 遇到错误时停止测试

pytest start.py -x

9、—maxfail=num,当用例错误个数达到指定数量时,停止测试

pytest start.py --maxfail=1

10、-k 匹配用例名称

执行测试用例名称包含http的所有用例

pytest -s -k http start.py

11、-k 根据用例名称排除某些用例

1 pytest -s -k "not http" start.py

12、-k 同时匹配不同的用例名称

pytest -s -k "method or weibo" start.py

Pycharm运行Pytest

平时写代码,咱们都在Pycharm写的,怎么可能一直用cmd来跑用例呢,现在我们就来看看在Pycharm中如何运行Pytest

  1. 首先,我们先要去settings里面设置单元测试框架为Pytest
  2. 如果是nosetests的话,右键运行是以python脚本运行的哦
  3. 如果设置了unittest则是以unittest框架去运行

注意

pytest 是可以兼容 unittest 脚本的,之前写的 unittest 用例也能用 pytest 框架去运行

今天的分享就到此结束了,大家还有什么不懂的可以评论区下提问哈,如果我的文章对你有所帮助的话,可以点赞三联支持一下

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

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

相关文章

爬虫工作者必备:使用爬虫ip轻松获得最强辅助

在进行网络数据爬取时,爬虫ip成为了爬虫工作者们的得力辅助。通过使用爬虫ip,可以实现IP地址的伪装和分布式请求,有效规避访问限制和提高爬取效率。本文将为爬虫工作者们分享关于使用爬虫ip的知识,帮助您轻松获取最强辅助&#xf…

【JavaEE】多线程案例-单例模式

文章目录 1. 前言2. 什么是单例模式3. 如何实现单例模式3.1 饿汉模式3.2 懒汉模式4. 解决单例模式中遇到的线程安全问题4.1 加锁4.2 加上一个判断解决频繁加锁问题4.2 解决因指令重排序造成的线程不安全问题 1. 前言 单例模式是我们面试中最常考到的设计模式。什么是设计模式呢…

Linux 用户注意!GNOME 45 将影响所有扩展!

GNOME 45 是一次重要的升级,但对扩展的影响并不令人满意! 每当 GNOME 升级,总会有一些扩展遭遇问题,这点并不新鲜。但如今,到了 GNOME 45,每个扩展都将面临问题! 那么,究竟是什么原…

Lua学习笔记:探究package

前言 本篇在讲什么 理解Lua的package 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践,轻理论,快速上手 提供全流程的源码内容 ★提高阅读体验★ 👉 ♠ 一级…

怒刷LeetCode的第8天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:双指针和排序 ​编辑第二题 题目来源 题目内容 解决方法 方法一:双指针 方法二:递归 方法三:快慢指针 方法四:栈 第三题 题目来源 题目内容 解决方法…

Python实现查询一个文件中的pdf文件中的关键字

要求,查询一个文件中的pdf文件中的关键字,输出关键字所在PDF文件的文件名及对应的页数。 import os import PyPDF2def search_pdf_files(folder_path, keywords):# 初始化结果字典,以关键字为键,值为包含关键字的页面和文件名列表…

数据分析三剑客之一:Pandas详解

目录 1 Pandas介绍 2 Pandas的安装与导入 2.1 Pandas模块安装 2.2 Pandas模块导入 3 pandas数据结构及函数 3.1 Series结构 3.1.1 ndarray创建Series对象 3.1.2 dict创建Series对象 3.1.3 标量创建Series对象 3.1.4 位置索引访问Series数据 3.1.5 标签索引访问Series…

华为云HECS安装docker

1、运行安装指令 yum install docker都选择y,直到安装成功 2、查看是否安装成功 运行版本查看指令,显示docker版本,证明安装成功 docker --version 或者 docker -v 3、启用并运行docker 3.1启用docker 指令 systemctl enable docker …

【Linux基础】第七章:搜索查找-find查找文件或者目录

find命令是根据文件属性进行查找的,如文件名,文件大小,所有者,所有组,是否为空,访问时间,修改时间等。 基本格式: find path [options] 先定位到etc 目录下 cd /etc1.按照文件名查找…

成集云 | 金蝶EAS集成聚水潭ERP(金蝶EAS主管库存)| 解决方案

源系统成集云目标系统 方案介绍 金蝶EAS是一款全球首款融合TOGAF标准SOA架构的企业管理软件,专门为大中型企业设计,以“创造无边界信息流”为产品设计理念,支持云计算、SOA和动态流程管理的整合技术平台。 聚水潭是一款以SaaS ER…

IP地址定位的基本原理

IP地址定位是一种用于确定互联网上设备地理位置的技术,它是网络管理、安全监控和市场定位等领域的重要工具。本文将深入探讨IP地址定位的基本原理,以及它是如何工作的。 1. IP地址的结构 IP地址是互联网上的设备的唯一标识符,它由一系列数字…

深入理解算法的时间复杂度

文章目录 时间复杂度的定义时间复杂度的分类时间复杂度分析常见数据结构和算法的时间复杂度常见数据结构常见算法 常见排序算法说明冒泡排序(Bubble Sort)快速排序(Quick Sort)归并排序(Merge Sort)堆排序(Heap Sort) 时间复杂度的定义 时间复杂度就是一种用来描述算法在输入规…

centos搭建activemq5.16

下载jdk、activemq(我这里都放在在/usr/local)之后。。。 在/usr/local/activemq/bin/目录下有一个env文件添加JAVA_HOME 注意activemq.xml里面不能出现中文,注释也不行 接下来在/usr/lib/systemd/system/创建activemq.service文件 # 单元节…

天选之子C++是如何发展起来的?如何学习C++呢?

天选之子C是如何发展起来的?如何学习C呢? 一、什么是C二、C发展史三、C的重要性3.1 语言的使用广泛度3.2 在工作领域 四、如何学习C4.1 大佬怎么学?4.2 自己怎么学 一、什么是C C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复…

【LeetCode-中等题】107. 二叉树的层序遍历 II

文章目录 题目方法一:队列层序迭代 题目 方法一:队列层序迭代 解题详情:【LeetCode-中等题】102. 二叉树的层序遍历 res.add(0,zres); //效果是将 zres 列表作为 res 的第一个子列表,并将其它原本在第一位置及之后的子列表向后移…

1979-2021年地级市空气流通系数数据

1979-2021年地级市空气流通系数数据 1、时间:1979-2021年 2、来源:整理自era-interim 3、范围:367个地级市 4、指标:10米风速、边界层高度、空气流通系数 5、指标解释: 空气流动系数是空气污染的常用工具变量&am…

音视频转换器 Permute 3 for mac中文

Permute 3是一款界面简洁且易于使用的媒体文件格式转换器。它具有强大的转换功能,无需复杂的配置,只需将文件拖放到界面窗口,就能进行媒体转换,非常方便。 Permute 3支持视频、音乐和图像的格式转换,可以通过拖拽支持…

Jetpack Compose基础组件 - Image

Image的源码参数预览 Composable fun Image(painter: Painter,contentDescription: String?,modifier: Modifier Modifier,alignment: Alignment Alignment.Center,contentScale: ContentScale ContentScale.Fit,alpha: Float DefaultAlpha,colorFilter: ColorFilter? …

个人记录--跟着同门学c#

前提:已安装Visual Studio ArcEngine&DotSpatial C#二次开发(一)之DotSpatial使用心得记录_dotspatial 开发文档_只想敲代码的研究僧的博客-CSDN博客 ArcEngine是一种用于二次开发的软件开发工具包,可以用来创建基于ArcGIS…