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

pytest使用报错(以及解决pytest所谓的“抑制print输出”)

1. 测试类的类名问题

#coding=utf-8import pytestclass TestClass1:def setup(self) -> None:print('setup')def test_01(self) -> None:print('test_01111111111111111111111')def test_02(self) -> None:print('test_02')

以上述代码为例,如果类名是Test开头,可以正常运行,并且输出print的内容,在这里插入图片描述
如果以Test结尾

# coding=utf-8import pytestclass Class1Test:def setup(self) -> None:print('setup')def test_01(self) -> None:print('test_01111111111111111111111')def test_02(self) -> None:print('test_02')

代码可以运行,但是结果会报错
在这里插入图片描述
所以,必须严格按照要求,测试类的文件名 以 test_ 开头进行命名,测试类 以 Test 开头进行命名,测试方法以 test_ 开头进行命名

2. setup方法

如果有需要调用其他实体类在setup中进行实例化的,需要按照要求,以实际需要进行命名,不能直接写set方法,会找不到具体的类。

2.1 模块级别 setup_module()

模块级别,执行所有的测试用例之前会执行一遍,有且只有一次

2.2 函数级别 setup_function()

class类之外的函数执行一次,这个setup就会执行一次

2.3 类级别 setup_class()

类执行一次,就会执行一次

2.4 方法级别 setup_method()

类中的方法执行一次,就会执行一次

2.5 举例

#coding=utf-8
import pytestdef setup_module(module):print("初始化=================模块")def teardown_module(module):print("清理===================模块")def setup_function(module):print("初始化=================函数")def teardown_function(module):print("清理===================函数")def test_01():print("类外的函数方法1=========")assert 1+2==3def test_02():print("类外的函数2=========")assert 3+2==5class TestClass1:def setup_class(self):print("初始化==============类1")def teardown_class(self):print("清理================类1")def setup_method(self):print("初始化1==============方法")def teardown_method(self):print("清理1================方法")def test_1_01(self):print("类1 的 测试方法 1 ")assert 1+1 ==2def test_1_02(self):print("类1 的测试方法 2")assert 1+2 == 3

代码运行结果为
在这里插入图片描述

  • 模块级别setup
    • 函数setup1
    • 函数teardown1
    • 函数setup2
    • 函数teardown2
    • 类级别setup
      • 方法setup1
      • 方法teardown1
      • 方法setup2
      • 方法teardown2
    • 类级别teardown
  • 模块级别teardown
http://www.lryc.cn/news/397010.html

相关文章:

  • 开源项目编译harbor arm架构的包 —— 筑梦之路
  • [笔记] SKF Enveloping FAQ 用户指南
  • 宪法学学习笔记(个人向) Part.3
  • 联想拯救者Y7000 IRX9 笔记本接口功能介绍
  • 【ESP32】打造全网最强esp-idf基础教程——16.SmartConfig一键配网
  • MD5加密和注册页面的编写
  • 【Android组件】封装加载弹框
  • Spring源码二十:Bean实例化流程三
  • 前端导出文件时,后端代码出错如何将错误信息返回给前端展示
  • 解决Spring Boot应用中的内存优化问题
  • shark云原生-日志体系-filebeat高级配置(适用于生产)-更新中
  • 响应式设计的双璧:WebKit 支持 CSS Flexbox 和 Grid 布局深度解析
  • Linux软件包管理
  • 如何分辨AI生成的内容?AI生成内容检测工具对比实验
  • Clion中怎么切换不同的程序运行
  • 【C++初阶】C++入门(下)
  • 【3】迁移学习模型
  • 【工具分享】FOFA——网络空间测绘搜索引擎
  • [嵌入式 C 语言] 按位与、或、取反、异或
  • Android --- 运行时Fragment如何获取Activity中的数据,又如何将数据传递到Activity中呢?
  • Java后端开发(十三)-- Java8 stream的 orElse(null) 和 orElseGet(null)
  • L2 LangGraph_Components
  • 09.C2W4.Word Embeddings with Neural Networks
  • 硅谷甄选二(登录)
  • scipy库中,不同应用滤波函数的区别,以及FIR滤波器和IIR滤波器的区别
  • 简谈设计模式之建造者模式
  • 力扣 hot100 -- 动态规划(下)
  • 【计算机毕业设计】018基于weixin小程序实习记录
  • 力扣之有序链表去重
  • Apache配置与应用(优化apache)