当前位置: 首页 > article >正文

pytest | 框架的简单使用

这里写目录标题

    • 单个文件测试方法
    • 执行测试套件的子集
      • 测试名称的子字符串
      • 根据应用的标记进行选择
    • 其他常见的测试命令

pytest框架的使用示例

pytest将运行当前目录及其子目录中test_*.py*_test.py 形式的所有 文件

文件内的函数名称可以test* 或者test_* 开头

在这里插入图片描述

单个文件测试方法

  • 运行方式- terminal

    pytest 不指定任何参数表示将执行当前目录下的所有test_文件 如上述pytest目录下的三个测试函数

在这里插入图片描述

F 代表测试失败,点 (.) 代表测试成功。

-q 选项会让 pytest 以“quiet”模式运行,这意味着它将减少输出的日志信息,只显示测试结果的摘要。

pytest 命令将执行所有格式的文件test_*要么_test*在当前目录和子目录中

  • 指定文件运行

pytest test_xx.py

在这里插入图片描述

  • 指定类实例名称运行

pytest -k TestClassDemoInstance -q

class TestClassDemoInstance:
    value = 0
    def test_one(self):
        self.value = 1
        assert self.value == 1

    def test_two(self):
        assert self.value == 1

以下是命令 pytest -k TestClassDemoInstance -q 的详细解释:

  • pytest:这是调用Python测试框架的命令。
  • -k TestClassDemoInstance:这个参数告诉 pytest 只运行测试名称包含 TestClassDemoInstance 的测试用例。【表示要在测试名称中搜索的子字符串】这可以是完整的测试函数名,也可以是类名或部分名称。
  • -q:这是 pytest 的一个命令行选项,表示“quiet”,即减少控制台输出。
  • TestClassDemoInstance:这是你想要运行的测试类或测试函数名称的一部分。

执行这个命令后,pytest 会搜索所有测试文件,查找名称中包含 TestClassDemoInstance 的测试用例,并只运行这些测试。【截至目前运行的测试文件,只有一个文件含有TestClassDemoInstance 实例】测试结果将以简洁的格式输出,通常只包含测试的总数和失败的测试数量。

  • 查看详细的运行信息

pytest -v test_square.py

import math

def test_sqrt():
   num = 25
   assert math.sqrt(num) == 5

def testsquare():
   num = 7
   assert 7*7 == 40

def tesequality():
   assert 10 == 11

在这里插入图片描述

执行测试套件的子集

Pytest 提供了两种方法来运行测试套件的子集:

  • 根据测试名称的子字符串匹配选择要运行的测试。
  • 根据应用的标记选择要运行的测试组

测试名称的子字符串

  • 测试文件所在目录内容下的文件

在这里插入图片描述

测试函数中只包含great字样的两个测试的文件内容如下 :

# test_square.py文件
import math

def test_sqrt():
   num = 25
   assert math.sqrt(num) == 5

def testsquare():
   num = 7
   assert 7*7 == 40

def tesequality():
   assert 10 == 11

def test_greater_num():
   num = 100
   assert num == 100
    
# test_compare.py文件
def test_greater():
   num = 100
   assert num > 100
def test_greater_equal():
   num = 100
   assert num >= 100
def test_less():
   num = 100
   assert num < 200
  • 执行测试

在这里插入图片描述

1 failed, 2 passed, 11 deselected in 0.12s 在结果中,我们可以看到 11 个测试被取消选择。这是因为那些测试名称不包含单词great在他们之中

根据应用的标记进行选择

类似于装饰器的作用,使用的方式如下

@pytest.mark.<markername>
  • 执行
pytest -m <markername> -v
import pytest

@pytest.mark.great
def test_greater():
   num = 100
   assert num > 100

@pytest.mark.great
def test_greater_equal():
   num = 100
   assert num >= 100


@pytest.mark.others
def test_less():
   num = 100
   assert num < 200

在这里插入图片描述

其他常见的测试命令

  • 安装 pytest…
  • 识别测试文件和测试功能。
  • 使用 pytest -v 执行所有测试文件。
  • 使用 pytest -v 执行特定文件。
  • 通过匹配 pytest -k -v 的子字符串执行测试。
  • 基于标记 pytest -m <marker_name> -v 执行测试。
  • 使用 @pytest.fixture 创建夹具。
  • conftest.py 允许从多个文件访问固定装置。
  • 使用 @pytest.mark.parametrize 参数化测试。
  • 使用 @pytest.mark.xfail 进行 Xfailing 测试。
  • 使用 @pytest.mark.skip 跳过测试。
  • 使用 pytest --maxfail = 在 n 次失败时停止测试执行。
  • 使用 pytest -n 并行运行测试。
    使用 @pytest.mark.parametrize 参数化测试。
  • 使用 @pytest.mark.xfail 进行 Xfailing 测试。
  • 使用 @pytest.mark.skip 跳过测试。
  • 使用 pytest --maxfail = 在 n 次失败时停止测试执行。
  • 使用 pytest -n 并行运行测试。
  • 使用 pytest -v --junitxml = “result.xml” 生成结果 xml。

http://www.kler.cn/a/403117.html

相关文章:

  • FPGA实现串口升级及MultiBoot(九)BPI FLASH相关实例演示
  • 深度学习3
  • 【Python TensorFlow】进阶指南(续篇三)
  • Matlab科研绘图:自定义内置多款配色函数
  • Android 14.0 kenel中修改rom系统内部存储的大小
  • 云原生之k8s服务管理
  • Knife4j与springboot集成自动编写API文档
  • 《生成式 AI》课程 第3講 CODE TASK 任务3:自定义任务的机器人
  • 【传知代码】VRT_ 关于视频修复的模型
  • mysql中mvcc如何处理纯读事务的?
  • 《数据结构》学习系列——图(上)
  • 如何控制自己玩手机的时间?两台苹果手机帮助自律
  • JDBC使用p6spy记录实际执行SQL方法【解决SQL打印两次问题】
  • AWS 多区域部署实战:Route 53 加权路由与多层健康检查
  • 反转链表、链表内指定区间反转
  • 10 基于深度学习的目标检测
  • Redis 集群主要有以下几种类型
  • 【Android原生问题分析】夸克、抖音划动无响应问题【Android14】
  • 2. Django中的URL调度器 (自定义路径转换器)
  • Windows Server 2022 Web1
  • misc设备驱动
  • [系统安全]PE文件头中的重定位表
  • springboot-事务失效以及排查过程
  • wife_wife
  • 设计探测1飞伏的装置可能吗?
  • gitlab ci/cd搭建及使用笔记(三)