1 pytest入门

pytest入门

  • 示例
    • 成功
    • 失败
  • 1.1 资源获取
    • 官方文档
    • 安装
  • 1.2 运行 Pytest
    • 测试搜索
      • 命名规则
  • 1.3 运行单个测试用例
  • 1.4 使用命令行选项
    • -h(--help)
    • --collect-only
    • -k
    • -m
    • -x
    • --maxfail=num
    • -s 与 --capture=method
      • -s 等价于 --capture=no
      • --capture=sys
      • --capture=fd
    • -l(--showlocals)
    • --lf(--last-failed)
    • --ff(--failed-first)
    • -v(--verbose)
    • -q(--quiet)
    • --tb=style
      • --tb=no
      • --tb=line
      • --tb=short
      • -tb=long
      • --tb=auto
      • --tb=native
    • durations=N
      • durations=0
    • --version

示例

成功

在这里插入图片描述

失败

在这里插入图片描述

1.1 资源获取

官方文档

安装

pip install pytest

1.2 运行 Pytest

$ pytest --help
usage: pytest [options] [file_or_dir] [file_or_dir] [...]
...
  • 若不提供任何参数,将在当前及其子目录下寻找测试文件,然后运行搜索到的测试代码
  • 若提供一个或多个文件名、目录名,将逐个查找并运行所有测试
    • 重复写将重复运行

ch1/tasks/test_three.py

"""Test the task data type."""
from collections import namedtuple
Task = namedtuple('Task', ['summary', 'owner', 'done', 'id'])
# 创建默认的 Task 对象,不必指定所有属性
Task.__new__.__defaults__ = (None, None, False, None)def test_defaults():"""Using no parameters should invoke defaults."""t1 = Task()t2 = Task(None, None, False, None)assert t1 == t2def test_member_access():"""Check .field functionality of nametuple."""t = Task('buy milk', 'brian')assert t.summary == 'buy milk'assert t.owner == 'brian'assert (t.done, t.id) == (False, None)

ch1/tasks/test_four.py

"""Test the task data type"""from collections import namedtupleTask = namedtuple('Task', ['summary', 'owner', 'done', 'id'])
Task.__new__.__defaults__ = (None, None, False, None)def test_asdict():"""_asdict() should return a dictionary."""t_task = Task('do something', 'okken', True, 21)t_dict = t_task._asdict()expected = {'summary': 'do something','owner': 'okken','done': True,'id':21}assert t_dict == expecteddef test_replace():"""_replace() should change passed in fields."""t_before = Task('finish book', 'brian', False)t_after = t_before._replace(id=10, done=True)t_expected = Task('finish book', 'brian', True, 10)assert t_after == t_expected

在这里插入图片描述

在这里插入图片描述

测试搜索

定义:pytest 搜索测试文件和用例的过程

  • 只要遵守 pytest 的命名规则,pytest 就能自动搜索所有待执行的测试用例

命名规则

  • 测试文件:test_something.py(Better) 或 something_test.py
  • 测试函数/测试类方法:test_something
  • 测试类:TestSomething

1.3 运行单个测试用例

指定文件后加 ::test_name
在这里插入图片描述

1.4 使用命令行选项

-h(–help)

查看全部选项

  • 输出末尾声明:显示结果取决于所指定的文件或目录,未指定则默认使用当前目录和文件

在这里插入图片描述
在这里插入图片描述

–collect-only

展示哪些测试用例会被运行
在这里插入图片描述

-k

使用表达式指定希望运行的测试用例
在这里插入图片描述

-m

标记测试并分组并分组

  • 可跨文件
  • 标记名自定义
  • 测试方法上方使用 @pytest.mark.标记名称 做标记
  • 可用表达式指定多个标记名以选中测试用例
    • -m "mark1 and mark2":同时带有这两个标记
    • -m "mark1 and not mark2":带有 mark1 且不带 mark2
    • -m "mark1 or mark2":带有 mark1 或 mark 2

在这里插入图片描述

-x

遇到失败时立即停止整个会话

  • 不用该选项的默认情况:断言失败或外部异常时,将该用例标记为失败并继续运行下一个
    在这里插入图片描述

–maxfail=num

失败几次后再停止
在这里插入图片描述

-s 与 --capture=method

-s 等价于 --capture=no

允许终端在测试运行时将输出流信息与运行结果一起输出,而关闭默认的输出捕获
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

–capture=sys

sys.stdout/stderr 将被输出至内存

–capture=fd

若文件描述符为1或2,则会被输出至临时文件中

-l(–showlocals)

测试失败时打印出局部变量名和值

  • 以便规避不必要的 print 语句
    在这里插入图片描述

–lf(–last-failed)

重新运行最后一个失败的测试用例
在这里插入图片描述

–ff(–failed-first)

作用与--last-failed基本相同,区别是--ff会运行完剩余的测试用例
在这里插入图片描述

-v(–verbose)

输出信息更详细

  • 每个测试用例都占一行(原本是每个文件占一行)
  • 测试的名字和结果都会显示出来,而不仅仅是一个点或字符
    在这里插入图片描述

-q(–quiet)

简化输出信息,只保留核心内容(与-v/--verbose相反)
在这里插入图片描述

–tb=style

决定捕获到失败时输出信息(信息回溯)的显示方式

–tb=no

屏蔽全部回溯信息

–tb=line

仅打印异常的代码位置

–tb=short

仅输出 assert 的一行以及系统判定内容(不显示上下文)

-tb=long

输出最为详尽的回朔信息

–tb=auto

默认值

  • 若有多个测试用例失败,仅打印首末两个用例的回溯信息
  • 格式与long模式的一致

–tb=native

只输出 Python 标准库的回溯信息,不显示额外信息

durations=N

显示最慢的 N 个阶段,耗时越长越靠前

  • 统计时包括每个测试用例的 call、setup、teardown 过程
    在这里插入图片描述

durations=0

所有阶段按耗时从长到短排序后显示

–version

显示当前 pytest 的版本及安装目录

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

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

相关文章

win10重新安装Windows应用商店

安装Windows 终端 用 PowerShell 重装 Microsoft Store使用 MSIX 包重装 Microsoft Store下载安装包及依赖下载Windows 应用商店的安装包安装包是依赖组件包 微软应用商店无法连接网络解决办法 参考: wind10自带的终端程序和powerShell 真是太垃圾了, 突…

CF1178F1 Short Colorful Strip 题解

Short Colorful Strip 传送门 题面翻译 题目描述 这是F题的第一个子任务。F1和F2的区别仅在对于m和时间的限制上 有n1种颜色标号从0到n,我们有一条全部染成颜色0的长为m的纸带。 Alice拿着刷子通过以下的过程来给纸带染色: 我们按照从1到n的顺序进…

C++标准学习--decltype

decltype / auto 是具有类型推导功能的 类型 描述/占位 符 decltype: 获取对象或表达式的类型auto: 类型自动推导 decltype 可以获取变量类型, (并不同于python的type,但python能打印出type获取的名称, C通过typeid实现&#xff…

Vue基知识四

本文对前边几章所学习的内容,以案例的形式做一个总结 一 TodoList案例 即待办事项案例,效果如下 1.1 组件化编码流程(通用) 这是编码时的通用流程,以后也可以按照这个流程来写代码(熟悉后这个流程的顺…

定时器问题(vue的问题)

我在a页面写一个定时,让他每秒钟打印一个1,然后跳转到b页面,此时可以看到,定时器依然在执行。这样是非常消耗性能的。如下图所示: 解决方法1 首先我在data函数里面进行定义定时器名称: data() {return {t…

SpringBoot 引入分页插件 PageHelper

官网 https://pagehelper.github.io/docs/howtouse/ 引入步骤 第1步&#xff1a;引入依赖 <!--分页插件--> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.2</ver…

Open3D 计算点云质心和中心(18)

Open3D 计算点云质心和中心(18) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 质心和中心是有所区别的,点云质心可以看作每个点的坐标均值,点云中心可以看作点云所在包围盒的中心,这也是上一章坐标最值的常用方法,下面就两种方法进行实现(图例,大概就是这个意思…

Android WiFi Service启动-Android13

Android WiFi Service启动 - Android13 1、SystemServer中入口2、WifiService启动2.1 关键类概要2.2 启动时序图 Android WiFi基础概览 AOSP > 文档 > 心主题 > WiFi概览 1、SystemServer中入口 编译生成对应的jar包&#xff1a;"/apex/com.android.wifi/javalib…

高性能RPC框架解密

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

编译和链接(2)

3. 预处理详解 3.2#define 3.2.5带副作用的宏参数 当宏参数在宏的定义中出现超过一次的时候&#xff0c;如果参数带有副作用&#xff0c;那么你在使用这个宏的时候就可能 出现危险&#xff0c;导致不可预测的后果。副作用就是表达式求值的时候出现的永久性效果。 例如&…

nmealib 库移植 - -编译报错不完全类型 error: field ‘st_atim’ has incomplete type

一、报错提示-不完全类型(has incomplete type) Compiling obj/main.o from main.c.. arm-linux-gcc -g -w -stdgnu99 -DLINUX -I./ -Inmealib/inc/ -c -o obj/main.o main.c In file included from /home/user/Desktop/nuc980-sdk/sdk/arm_linux_4.8/usr/include/sys/stat…

【c/python】用GTK实现一个带菜单的窗口

一、用python 在GTK中创建一个带菜单的窗口&#xff0c;可以通过使用Gtk.MenuBar、Gtk.Menu和Gtk.MenuItem组件来构建菜单。以下是一个基本的例子&#xff0c;展示了如何使用Python的PyGObject库创建一个简单的带菜单栏的GTK窗口。 import gi gi.require_version(Gtk, 3.0) f…

【软件测试】学习笔记-不同视角的软件性能与性能指标

本篇文章探讨新的测试主题&#xff1a;性能测试&#xff0c;因为性能测试的专业性很强&#xff0c;所以我会以从0到1的入门者视角&#xff0c;系统性地阐述性能测试的方法以及应用领域&#xff0c;用实例去诠释各种性能指标。 本篇文章站在全局的视角&#xff0c;帮你梳理软件性…

【Python机器学习】决策树——树的特征重要性

利用一些有用的属性来总结树的工作原理&#xff0c;其中最常用的事特征重要性&#xff0c;它为每个特征树的决策的重要性进行排序。对于每个特征来说&#xff0c;它都是介于0到1之间的数字&#xff0c;其中0代表“根本没有用到”&#xff0c;1代表“完美预测目标值”。特征重要…

【复现】网康科技-防火墙存在RCE漏洞_17

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 网康下一代防火墙(NGFW)是一款可以全面应对应用层威胁的高性能防火墙。通过深入洞察网络流量中的用户、应用和内容&#xff0c;并…

Vulnhub靶机:driftingblues 2

一、介绍 运行环境&#xff1a;Virtualbox 攻击机&#xff1a;kali&#xff08;10.0.2.15&#xff09; 靶机&#xff1a;driftingblues2&#xff08;10.0.2.18&#xff09; 目标&#xff1a;获取靶机root权限和flag 靶机下载地址&#xff1a;https://www.vulnhub.com/entr…

YOLOv5改进 | 注意力篇 | CGAttention实现级联群体注意力机制 (全网首发改进)

一、本文介绍 本文给大家带来的改进机制是实现级联群体注意力机制CascadedGroupAttention,其主要思想为增强输入到注意力头的特征的多样性。与以前的自注意力不同,它为每个头提供不同的输入分割,并跨头级联输出特征。这种方法不仅减少了多头注意力中的计算冗余,而且通过增…

四、Qt 的第一个demo

在上一篇章节里《三、Qt Creator 使用》&#xff0c;我们介绍了如何使用Qt Creator创建一个简单的带窗体的demo&#xff0c;在这一章节里&#xff0c;我们详细讲解一下这个demo的文件组成&#xff0c;及主函数&#xff0c;并在UI上加一些控件&#xff0c;实现一些简单的功能。 …

Qt打包程序

添加链接描述

11Spring IoC注解式开发(下)(负责注入的注解/全注解开发)

1负责注入的注解 负责注入的注解&#xff0c;常见的包括四个&#xff1a; ValueAutowiredQualifierResource 1.1 Value 当属性的类型是简单类型时&#xff0c;可以使用Value注解进行注入。Value注解可以出现在属性上、setter方法上、以及构造方法的形参上, 方便起见,一般直…