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 = 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.mzph.cn/pingmian/60955.shtml

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

相关文章

【C++】类和对象-深度剖析默认成员函数-上

> &#x1f343; 本系列为初阶C的内容&#xff0c;如果感兴趣&#xff0c;欢迎订阅&#x1f6a9; > &#x1f38a;个人主页:[小编的个人主页])小编的个人主页 > &#x1f380; &#x1f389;欢迎大家点赞&#x1f44d;收藏⭐文章 > ✌️ &#x1f91e; &#x1…

Web性能优化:从基础到高级

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Web性能优化&#xff1a;从基础到高级 Web性能优化&#xff1a;从基础到高级 Web性能优化&#xff1a;从基础到高级 引言 基础优…

当 docker-compose.yaml 文件部署时,Dify 线上版本升级过程

如果线上 Dify 是通过 docker-compose.yaml 文件部署的&#xff0c;那么当 Dify 版本升级时该如何操作呢&#xff1f;官方已经给出了 Docker compose 和 Source Code 两种方式。相对而言&#xff0c;前者更简单些&#xff0c;至少不需要安装依赖包和迁移数据库文件。为了更加具…

如何让手机ip变成动态

在数字化浪潮中&#xff0c;手机已成为我们日常生活中不可或缺的一部分。无论是浏览网页、使用社交媒体还是进行在线购物&#xff0c;手机都扮演着举足轻重的角色。然而&#xff0c;在享受网络带来的便利时&#xff0c;我们也需要关注网络安全和隐私保护。静态IP地址可能让手机…

vue3 如何调用第三方npm包内部的 pinia 状态管理库方法

抛砖引玉: 如果在开发vue3项目是, 引用了npm第三方包 ,而且这个包内使用了Pinia 状态管理库,那我们如何去调用 npm内部的 Pinia 状态管理库呢? 实际遇到的问题: 今天在制作npm包时遇到的问题,之前Vue2版本的时候状态管理库用的Vuex ,当时调用npm包内的状态管理库很简单,直接引…

Linux笔记---调试工具GDB(gdb)

1. gdb的概念 GDB&#xff0c;全称GNU Debugger&#xff0c;是一个功能强大的开源调试工具&#xff0c;广泛用于Unix和类Unix系统&#xff0c;以及Microsoft Windows和macOS平台。GDB允许开发者在程序执行过程中查看内部运行情况&#xff0c;帮助定位和修复程序中的错误。 gd…

编译器gcc/g++

gcc 只用来编译C g 编译C/C 1.预处理&#xff08;进行宏替换/去注释/条件编译/头文件展开等&#xff09; 先创建 code.c 文件 -E --> 从现在开始&#xff0c;进行程序的翻译&#xff0c;一旦预处理做完&#xff0c;就停下来 -o --> 表明 -o 后面的文件名称 code…

一.安装版本为19c的Oracle数据库管理系统(Oracle系列)

1.数据库版本信息&#xff1a; 版本信息&#xff1a; 或者直接由命令查出来&#xff1a; 2.操作系统的版本信息 3.安装包下载与上传 可以去oracle官网下载也可以从其他人的百度网盘链接中下载&#xff1a; 使用xftp工具或者其他的工具&#xff08;mobaxterm&#xff09;上传到l…

DimensionX 部署笔记

目录 生成视频用CogVideoX-5b-I2V 推理代码&#xff1a; DimensionX 生成视频用CogVideoX-5b-I2V 推理代码&#xff1a; 可以生成&#xff0c;从左向右旋转的&#xff0c;也可以生成从上往下旋转的&#xff1a; import torch from diffusers import CogVideoXImageToVideo…

uni-app移动端与PC端兼容预览PDF文件

过程遇到的问题 1、如果用的是最新的版本的pdfjs的话&#xff0c;就会报Promise.withResolvers 不是一个方法的错误&#xff0c;原因是Promise.withResolvers是ES15新特性&#xff0c;想了解可参考链接&#xff0c;这里的解决方案是将插件里的涉及到Promise.withResolvers的地…

Node.js | Yarn下载安装与环境配置

一、安装Node.js Yarn 是 Node.js 下的包管理工具&#xff0c;因此想要使用 Yarn 就必须先下载 Node.js。 推荐参考&#xff1a;Node.js | npm下载安装及环境配置教程 二、Yarn安装 打开cmd&#xff0c;输入以下命令&#xff1a; npm install -g yarn检查是否安装成功&…

开源TTS语音克隆神器GPT-SoVITS_V2版本地整合包部署与远程使用生成音频

文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 本文主要介绍如何在Windows系统电脑使用整合包一键部署开源TTS语音克隆神器GPT-SoVITS&#xff0c;并结合cpolar内网穿透工…

[Docker#11] 容器编排 | .yml | up | 实验: 部署WordPress

目录 1. 什么是 Docker Compose 生活案例 2. 为什么要使用 Docker Compose Docker Compose 的安装 Docker Compose 的功能 使用步骤 核心功能 Docker Compose 使用场景 Docker Compose 文件&#xff08;docker-compose.yml&#xff09; 模仿示例 文件基本结构及常见…

鸿蒙NEXT应用示例:切换图片动画

【引言】 在鸿蒙NEXT应用开发中&#xff0c;实现图片切换动画是一项常见的需求。本文将介绍如何使用鸿蒙应用框架中的组件和动画功能&#xff0c;实现不同类型的图片切换动画效果。 【环境准备】 电脑系统&#xff1a;windows 10 开发工具&#xff1a;DevEco Studio NEXT B…

【spring 】Spring Cloud Gateway 的Filter学习

介绍和使用场景 Spring Cloud Gateway 是一个基于 Spring Framework 5 和 Project Reactor 的 API 网关&#xff0c;它旨在为微服务架构提供一种简单而有效的方式来处理请求路由、过滤、限流等功能。在 Spring Cloud Gateway 中&#xff0c;Filter 扮演着非常重要的角色&#…

opencv(c++)图像的灰度转换

opencv(c)图像的灰度转换 quickopencv.h #pragma once #include <opencv2/opencv.hpp> using namespace cv; class QuickDemo { public:void colorSpace_Demo(Mat& image); };quickopencv.cpp #include "quickopencv.h"// QuickDemo类中的颜色空间演示函…

problem forward和solution backward有什么区别

Note: 在具体研究中&#xff0c;problem forward是先提出问题&#xff0c;然后围绕着科学问题设计出完美的解决方案&#xff1b;而solution backward是先盘算自己有哪些技术&#xff0c;有哪些解决方案&#xff0c;反过来去寻找和定义问题。

C++构造函数详解

构造函数详解&#xff1a;C 中对象初始化与构造函数的使用 在 C 中&#xff0c;构造函数是一种特殊的成员函数&#xff0c;它在创建对象时自动调用&#xff0c;用来初始化对象的状态。构造函数帮助我们确保每个对象在被创建时就处于一个有效的状态&#xff0c;并且在不传递任何…

使用WebSocket技术实现Web应用中的实时数据更新

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用WebSocket技术实现Web应用中的实时数据更新 使用WebSocket技术实现Web应用中的实时数据更新 使用WebSocket技术实现Web应用中…

[N1CTF 2018]eating_cms

打开题目 只有个登录框&#xff0c;其他什么都没有&#xff0c;尝试了一下弱口令&#xff0c;没能成功 尝试访问一下register.php&#xff0c;看看能不能注册个账号 注册页面&#xff0c;随便注册个账号登陆一下 url中感觉是个注入点&#xff0c;尝试使用file伪协议读取一下us…