pytest | 框架的简单使用

server/2024/11/18 6:34:34/

这里写目录标题

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

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 = 0def test_one(self):self.value = 1assert self.value == 1def 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 mathdef test_sqrt():num = 25assert math.sqrt(num) == 5def testsquare():num = 7assert 7*7 == 40def tesequality():assert 10 == 11

在这里插入图片描述

执行测试套件的子集

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

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

测试名称的子字符串

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

在这里插入图片描述

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

# test_square.py文件
import mathdef test_sqrt():num = 25assert math.sqrt(num) == 5def testsquare():num = 7assert 7*7 == 40def tesequality():assert 10 == 11def test_greater_num():num = 100assert num == 100# test_compare.py文件
def test_greater():num = 100assert num > 100
def test_greater_equal():num = 100assert num >= 100
def test_less():num = 100assert 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 = 100assert num > 100@pytest.mark.great
def test_greater_equal():num = 100assert num >= 100@pytest.mark.others
def test_less():num = 100assert 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.ppmy.cn/server/142832.html

相关文章

React前端框架入门教程:从零开始构建一个简单的任务管理应用

一、什么是React? React是一个由Facebook开发和维护的开源前端JavaScript库,用于构建用户界面,特别是单页应用(SPA)。React的核心思想是通过组件化的方式,帮助开发者以声明式的方式构建用户界面,使得UI的构建更加高效、可维护和可扩展。 React的主要特点包括:- 组件化…

数据结构---详解栈

一、栈的概念和结构 栈&#xff1a;⼀种特殊的线性表&#xff0c;其只允许在固定的⼀端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 压栈&a…

MAC上的Office三件套报53错误解决方案(随笔记)

目录 现象原因解决方式1. 可视化2. 命令行 参考链接 现象 最近Mac Mini M4非常热门&#xff0c;我也种草买了一台丐中丐版本来体验一下。 在安装Office三件套后&#xff0c;遇到了一个53的错误&#xff1a; Run-time error 53:File not found: Library/Application Support/A…

华为开源自研AI框架昇思MindSpore应用案例:人体关键点检测模型Lite-HRNet

如果你对MindSpore感兴趣&#xff0c;可以关注昇思MindSpore社区 一、环境准备 1.进入ModelArts官网 云平台帮助用户快速创建和部署模型&#xff0c;管理全周期AI工作流&#xff0c;选择下面的云平台以开始使用昇思MindSpore&#xff0c;获取安装命令&#xff0c;安装MindSpo…

HarmonyOs DevEco Studio小技巧31--卡片的生命周期与卡片的开发

Form Kit简介 Form Kit&#xff08;卡片开发服务&#xff09;提供一种界面展示形式&#xff0c;可以将应用的重要信息或操作前置到服务卡片&#xff08;以下简称“卡片”&#xff09;&#xff0c;以达到服务直达、减少跳转层级的体验效果。卡片常用于嵌入到其他应用&#xff0…

每日小练:Day4

1.数据统计 题目链接&#xff1a;D-[NOIP2010]数字统计_NOIP2010普及组复赛 统计2出现的次数&#xff0c;把这个数的每一位都取模出来&#xff0c;判断它是否是2&#xff0c;如果是2&#xff0c;则count import java.util.*; public class Main{public static void main(St…

MuMu模拟器安卓12安装Xposed 框架

MuMu模拟器安卓12安装Xposed 框架 当开启代理后,客户端会对代理服务器证书与自身内置证书展开检测,只要检测出两者存在不一致的情况,客户端就会拒绝连接。正是这个原因,才致使我们既没有网络,又抓不到数据包。 解决方式: 通过xposed框架和trustmealready禁掉app里面校验…

UE5 设置Sequence播完后返回起始位置

UE5 的sequence中&#xff0c;播放完毕&#xff0c;动画会停到最后一帧&#xff0c; 需要播放完毕后&#xff0c;设置sequence为起始位置 蓝图中控制方法&#xff1a; 链接&#xff1a;UE5 设置Sequence播完后返回起始位置 posted by anonymous | blueprintUE | PasteBin F…