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.hqwc.cn/news/412992.html

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

相关文章

基于信用卡交易欺诈非均衡数据的处理

目录 一、数据处理 二、不做处理建模 三、under_sampling建模 3.1under_sampling NearMiss 3.2under_sampling RandomUnderSampler 评价 四、 over_sampling建模 4.1over_sampling SMOTETomek 4.2over_sampling RandomOverSampler 评价 import numpy as np import pa…

Git项目分支管理规范

一、分支管理 创建项目时,会针对不同环境创建两个常设分支(也可以算主分支,永久不会删除) master:生产环境的稳定分支,生产环境基于该分支构建。仅用来发布新版本,除了从release测试分支或 hotfix-*Bug修复分支进行m…

基于D2-NET的图像配准(基于PYQT的可运行界面)

这是之前对D2-NET的一个封装。D2-NET在图像配准领域还是占有一席之地的。 我们在D2-NET的基础上进行了一些小小的改动,也增加了FLANNRANSAC的提纯策略,同时增加了PYQT的一个界面。 参考的代码:代码1 代码2 首先介绍一下这个界面&#x…

计算机网络课程设计-网络聊天程序的设计与实现

目录 前言 1 实验题目 2 实验目的 3 实验内容 3.1 客户端 3.1.1 步骤 3.1.2 关键代码 3.2 服务器 3.2.1 步骤 3.2.2 关键代码 4 实验结果与分析 5 代码 5.1 客户端 5.2 服务器 前言 本实验为计算机网络课程设计内容,基本上所有代码都是根据指导书给的附…

RDMA编程实践-SEND-RECEICVE原语应用

RDMA编程实践 本文描述了RDMA编程过程中的SEND-RECEIVE双边原语的代码实现。包含多个版本,1、client向server发送消息,server回复client收到消息(ACK),然后两边断开连接。2、server端循环等待客户端建立连接,client发送一次消息后…

【Android】为什么在子线程中更新UI不会抛出异常

转载请注明来源:https://blog.csdn.net/devnn/article/details/135638486 前言 众所周知,Android App在子线程中是不允许更新UI的,否则会抛出异常: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the origin…

NumPy 中数组拼接、合并详解

1、np.append() 1.1、语法 将值添加到数组的末端,返回一个新的数组,而原数组不变。 numpy.append(arr, values, axisNone)参数描述arr : 类数组输入的数组values : 类数组向数组 arr 添加的元素,需要与 arr 维度相同axis : 整型添加操作的…

python对自动驾驶进行模拟

使用了 Pygame 库来创建一个简单的游戏环境,模拟了一辆自动驾驶汽车在道路上行驶。汽车的位置和速度通过键盘控制,可以左右移动和加速减速。道路的宽度和颜色可以根据需要进行调整。 import pygame import random # 游戏窗口大小 WINDOW_WIDTH 800 WINDOW_HEIG…

git 删除 submodule 子模块的步骤

实验有效,这里删除了两个 submodule。 1, 执行删除 submodule mkdir tmp1 && cd tmp1 && git clone --recursive ssh://gitaaa.bbb.ccc.git \ && cd ccc/ && git checkout -b abranch_01 \ && git submodule deinit -f…

我终于学会的前端技能——代码调试、打断点

在技术的世界里,要用魔法来打败魔法 说来惭愧我做前端已近三年了竟然还没有学会如何调试代码,也就是给自己的代码打上断点一步步看它的运行状态以达到理清代码运行逻辑、排查问题提升开发效率的目的。直到最近我才学会了这一技能,在这之前我…

Neos的渗透测试靶机练习——DarkHole-1

DarkHole-1 一、实验环境二、开始渗透1. 搜集信息2. sql注入4. 提权 三、总结 一、实验环境 虚拟机软件:VirtualBox 攻击机:kali linux(网卡初始为仅主机模式,要有安全意识) 靶机:DarkHole-1(网…

磁盘位置不可用怎么修复?

磁盘位置不可用是计算机使用中经常遇到的问题。造成磁盘位置不可用的原因有多种,其中最常见的是磁盘文件系统损坏。当文件系统损坏时,操作系统无法正常访问磁盘上的数据,导致磁盘位置不可用。 磁盘位置不可用怎么修复? 当磁盘位置…