Pytest框架 —— setUp()和tearDown()函数

Python Pytest中setup和teardown使用详解 在Python的自动化测试中,Pytest是一个非常流行且功能强大的测试框架。为了提高测试的效率和组织性,Pytest提供了setup和teardown功能,用于在测试执行前进行准备工作,以及在测试执行后进行清理工作。本文将详细介绍Pytest中setup和teardown的作用域及其使用方法,并提供相应的示例代码。 阅读详情

1、setUp()和tearDown()函数介绍

之前学过Unittest测试框架,知道前置setup()函数和后置teardown()函数非常好用,在每次用例开始前和结束后都去执行一次。

当然还有更高级一点的setupClass()函数和teardownClass()函数,需配合classmethod装饰器一起使用,在做Selenium自动化的时候,它的效率尤为突出,可以只启动一次浏览器执行多个用例。

2、setUp()和tearDown()函数作用

  • setup()函数主要是进行测试前的初始化工作,比如:在接口测试前面做一些前置的参数赋值,数据库操作等等。

  • teardown()函数是测试后的清除工作,比如:参数还原或销毁,数据库的还原恢复等。

总结:setup()函数表示测试类中每个测试方法执行前都需要执行的操作,teardown()函数表示每个测试方法执行后都需要执行的操作。

3、Pytest框架的setUp()和tearDown()

Pytest框架也有前置setup()函数和后置teardown()函数,并且还不止四个。

Pytest框架setUp()函数和tearDown()函数主要分为:模块级,类级,方法级,函数级。

说明每个级别的含义:

模块级:指的是一个.py文件。

类级:一个.py文件中可以写多个类。(一般情况下只写一个类)

方法级:类中定义的方法叫方法。

函数级:类外定义的方法叫函数。

Pytest框架提供的setUp()函数和tearDown()函数如下:

模块级与函数级,不定义在测试类中。

  • 模块级:setup_module()/teardown_module():开始于模块始末,全局的。
  • 函数级:setup_function()/teardown_function():只对函数用例生效(不在类中)。

类级与方法级,定义在类中

  • 类级:setup_class()/teardown_class():只在类中前后运行一次(在类中)。

  • 方法级:setup_method()/teardown_method():开始于方法始末(在类中)。

  • 自由的:setup()/teardown():直接使用感觉和方法级前后置函数一样。

4、示例

(1)方法级

"""
setup_method()和 teardown_method()函数
需要定义在测试类中,定义在类外不起作用。
setup_method()定义场景,如:打开浏览器,加载网页等
teardown_method()场景,如:关闭浏览器等
"""
import pytest

# 测试类
class Test_setUp_tearDown:

    # 方法级,前置函数
    def setup_method(self):
        print("setup_method(self):在每个测试方法之前执行")


    # 方法级,后置函数
    def teardown_method(self):
        print("teardown_method(self):在每个测试方法之后执行\n")


    # 测试用例a
    def test_a(self):
        print("test_a方法")
        assert True

    # 测试用例b
    def test_b(self):
        print("test_b方法")
        assert True


if __name__ == '__main__':
    pytest.main()

"""
执行结果:

setup_method(self):在每个测试方法之前执行
test_a方法
teardown_method(self):在每个测试方法之后执行

PASSEDsetup_method(self):在每个测试方法之前执行
test_b方法
teardown_method(self):在每个测试方法之后执行
"""

(2)类级

"""
setup_class()和 teardown_class()函数
需要定义在测试类中,定义在类外不起作用。
setup_class()定义场景,比如:创建日志对象,创建数据库的连接,创建接口的请求对象等。
teardown_class()定义场景,比如:销毁日志对象,销毁数据库的连接,销毁接口的请求对象。
"""

import pytest


class Test_setUp_tearDown:

    # 方法级,前置函数
    def setup_method(self):
        print("setup_method(self):在每个测试方法之前执行")

    # 方法级,后置函数
    def teardown_method(self):
        print("teardown_method(self):在每个测试方法之后执行\n")

    # 类级,前置函数
    def setup_class(self):
        print("setup_class(self):每个测试类之前执行一次\n")

    # 类级,后置函数
    def teardown_class(self):
        print("teardown_class(self):每个测试类之后执行一次")

    # 测试用例a
    def test_a(self):
        print("test_a方法")
        assert True

    # 测试用例b
    def test_b(self):
        print("test_b方法")
        assert True


if __name__ == '__main__':
    pytest.main()

"""
执行结果:

setup_class(self):每个测试类之前执行一次

setup_method(self):在每个测试方法之前执行
test_a方法
teardown_method(self):在每个测试方法之后执行

PASSEDsetup_method(self):在每个测试方法之前执行
test_b方法
teardown_method(self):在每个测试方法之后执行

teardown_class(self):每个测试类之后执行一次
"""

(3)函数级 

"""
setup_function()和 teardown_function()函数
需要定义在测试类外面,只负责函数的前后置。
对类中定义的方法,不起作用。
"""

import pytest

# 函数级,前置函数
def setup_function():
    print("setup_function: 每个函数开始前都会执行")

# 函数级,后置函数
def teardown_function():
    print("teardown_function: 每个函数结束都会执行\n")


# 测试用例a
def test_a():
    print("test_a函数")
    assert True


# 测试用例b
def test_b():
    print("test_b函数")
    assert True

# 测试类
class Test_setUp_tearDown:

    # 测试用例a
    def test_c(self):
        print("test_c方法")
        assert True

    # 测试用例b
    def test_d(self):
        print("test_d方法")
        assert True


if __name__ == '__main__':
    pytest.main()

"""
执行结果:
setup_function: 每个函数开始前都会执行
test_a函数
teardown_function: 每个函数结束都会执行

PASSEDsetup_function: 每个函数开始前都会执行
test_b函数
teardown_function: 每个函数结束都会执行

PASSEDtest_c方法
PASSEDtest_d方法
PASSED

"""

(4)模块级 

"""
setup_module()和 teardown_module()函数
需要定义在测试类外面,
对函数和类中定义的方法,都不起作用。
"""

import pytest


# 模块级,前置函数
def setup_module():
    print("setup_module():在模块最之前执行\n")


# 模块级,后置函数
def teardown_module():
    print("teardown_module:在模块之后执行")


# 函数级,前置函数
def setup_function():
    print("setup_function: 每个函数开始前都会执行")


# 函数级,后置函数
def teardown_function():
    print("teardown_function: 每个函数结束都会执行\n")


# 测试用例a
def test_a():
    print("test_a函数")
    assert True


# 测试用例b
def test_b():
    print("test_b函数")
    assert True


# 测试类
class Test_setUp_tearDown:

    # 测试用例a
    def test_c(self):
        print("test_c方法")
        assert True

    # 测试用例b
    def test_d(self):
        print("test_d方法")
        assert True


if __name__ == '__main__':
    pytest.main()

"""
setup_module():在模块最之前执行

setup_function: 每个函数开始前都会执行
test_a函数
teardown_function: 每个函数结束都会执行

PASSEDsetup_function: 每个函数开始前都会执行
test_b函数
teardown_function: 每个函数结束都会执行

PASSEDtest_c方法
PASSEDtest_d方法
teardown_module:在模块之后执行
PASSED
"""

 END绵薄之力

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

加入我的软件测试交流群:110685036免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

获取方式 :

『德不孤』Pytest框架 — 9、Pytest框架的setUp()和tearDown()函数 文章目录1、setUp()和tearDown()函数介绍2、setUp()和tearDown()函数作用3、Pytest框架的setUp()和tearDown()4、示例(1)方法级(2)类级(3)函数级(4)模块级 1、setUp()和tearDown()函数介绍 之前学过Unittest测试框架,知道前置setup()函数和后置teardown()函数非常好用,在每次用例开始前和结束后都去执行一次。 当然还有更高级一点的setupClass()函数和teardownClass()函数,需配合classm 阅读详情

相关推荐

九、Pytest框架 — Pytest框架的setUp()和tearDown()函数

###文章内容有配套的学习视频和笔记都放在了文章末尾### 1、setUp()和tearDown()函数介绍 之前学过Unittest测试框架,知道前置setup()函数和后置teardown()函数非常好用,在每次用例开始前和结束后都去执行一次。 当然还有更高级一点的setupClass()函数和teardownClass()函数,需配合classmethod装饰器一起使用,在做Selenium自动化的时候,它的效率尤为突出,可以只启动一次浏览器执行多个用例。 2、setUp()和tearDown(

测试-八戒 1696

pytest—setup和teardown简单用法

前言 小伙伴们好呀,我又来了我们今天聊聊关于pytest前后置应用,使用过unittest的小伙伴们都知道,setup和teardown是用来处理用例的开始前工作和结束后的工作,其中还有setupclass和teardownclass是保证执行所以的用例都只执行1次前置和后置,使用起来非常方便,那么学习pytest强大的测试框框,肯定也有这个功能,并且还比unittest的简单不少。 pytest中的前置 pytest比较强大,提供了不仅仅一种方法的前置和后置: setup_module、.

qishuzdh的博客 6339

关于42步进电机驱动——基于STM32 HAL库实现

我找了好多资料,好多关于42步进电机的都是文档,这么文档都需要积分,需要积分就算了内容还非常差,浪费时间和电脑的内存。关于大部分是基于Arduino和51去驱动的 42步进电机驱动硬件如下: 首先你要了解步进电机的驱动原理,我也不啰嗦了,请看这边博客: 二相四线,四相五线,四相六线步进电机接线及驱动方法 , 看完这篇你就知道驱动和接线的原理了。 起初我也为如何接线烦恼,因为有些博客在讲述这些问题的时候没有讲的很透彻。 方法如下: ①用万用表调到欧姆档,用其中一个表笔搭在一个引脚上,依次测其它.

Jodan132的博客 1万+

Pytest测试用例之setup与teardown方法(一)

续 日常积累 | 初识Pytest| 日常积累 | 初识pytest (二)继续分享,今天讲讲在编写完基本用例后,有些通用业务流代码或一些共用代码如何使用前置后置方法直接调用学过...

2481

Xilinx System Generator多速率系统(Multi-Rate Systems)的使用

在本实验练习中,您将学习在System Generator中如何使用多个时钟域有效地实现具有多个数据速率的设计。

白码王子小张的博客 1085

两轮差速小车循线控制原理分析

硬件资料设定:小车驱动来自于两个相同的电机,转向依靠两轮差速实现,小车前后左右安装超声波传感器,前后各一个,左右各两个; 功能目标:假设小车左侧有墙壁,通过超声波测距实现按指定距离沿墙行驶 参数设定:车轮半径r=3cm,车轮间距wd=10cm,车身长length=16cm,侧边超声波传感器前后各一个,假设一个在车头一个在车尾,间距=车身=length=16cm,小车线速度恒定v = 0.2m/s,距离墙d=10cm,假设超声波传感器以10Hz的频率采集距离。 在以上条件下,设定小车出发点,方向与墙平行

aibingjin的博客 1万+

pytest测试框架使用基础03 setUp()和tearDown()

总结:setup()函数表示测试类中每个测试方法执行前都需要执行的操作,teardown()函数表示每个测试方法执行后都需要执行的操作。Pytest框架setUp()函数和tearDown()函数主要分为:模块级,类级,方法级,函数级。Pytest框架也有前置setup()函数和后置teardown()函数,并且还不止四个。模块级与函数级,不定义在测试类中。类级与方法级,定义在类中。

xiaolipanpan的博客 1073

别再瞎调了!手把手教你搞定STM32步进电机PID速度环(附完整代码与比例系数详解)

本文详细解析了STM32步进电机PID速度环的完整实现过程,从算法输出到脉冲频率的转换链路,重点讲解了比例系数的确定方法及系统标定实验。通过完整的代码示例和调试技巧,帮助工程师解决实际应用中的常见问题,提升步进电机控制精度与稳定性。

weixin_28729331的博客 209

pytest中setup和teardown

参考博客: pytest 2.测试用例setup和teardown以及使用@pytest.fixture()装饰器来实现部分用例的前后置,param参数化,ids(不显示unicode编码),name(别名) - 裴敏儿 - 博客园 分类 : 一、函数级的(setup_function、teardown_function)只对函数用例生效,而且不在类中使用 二、类级的(setup_class、teardown_class)在类中使用,类执行之前运行一次,类执行之后运行一次 三、类中方法级的(set

喵酱 979

matlab锅炉 pid仿真,基于Matlab锅炉仿真.doc

基于Matlab锅炉仿真内蒙古科技大学MATLAB课程设计任务书2012题 目:锅炉汽包水位控制系统学生姓名:林三彪学 号:0967112127专 业:测控技术与仪器班 级:2009-1指导教师:梁 丽摘 要锅炉是化工、炼油、发电、造纸和制糖等工业生产过程中必不可少的重要动力设备。锅炉往往成了不少工厂不可缺少的一部分,因而,对锅炉设备中的自动控制系统进行分析研究是必要的...

weixin_29133981的博客 1089

自然语言处理:长文本场景下的关键词抽取实践

自然语言处理:长文本场景下的关键词抽取实践

丨汀、的博客 2072

02 pytest setup&teardown

顾名思义在整个模块生效什么是模块呢,在这里你可以理解为一个py文件就是一个模块所以在一个测试文件中写了setup_module在所有用例开始前只执行一次/teardown_module 在所有用例结束后执行一次话不多说看例子"""验证setup teardown"""print("在这个py文件最开始时只执行一次....")print("在这个py文件最后只执行一次.....")print("执行的case1")print("执行的case2")执行结果。

weixin_43998231的博客 631

华为OD新系统机试真题 - 端口流量统计

华为OD机试新系统真题【端口流量统计】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD新系统4月26号机试真题【端口流量统计】。

qq_45776114的博客 754

python+selenium+pytest自动化测试,unittest转pytest

python+selenium+pytest自动化测试,unittest转pytest

weixin_49797392的博客 744

执行任务赚积分

接下来N行,每行两个空格分隔的整数(SLA和V),SLA表示任务的最晚处理时间,V表 示任务对应的积分。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。第2个时间单位内,处理任务4,获得5个积分。输入描述:第一行为一个数N,表示有N个任务,1

面试高手的博客 4685

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python+pytest 自动化测试框架

pytest框架作用 测试框架的作用是,帮助我们管理、执行测试用例、参数化、断言、生成测试报告等基础性工作 命名规则 Pytest单元测试中的类名和方法名必须是以test_开头或者_test结尾的,类名以Test开头,执行中只能找到test开头的类和方法 pytest的setup,setup_class和teardown,teardown_class函数 运行于测试方法的始末,即:运行一次测试函数会执行一次setup和teardown运行于测试方法的始末,但是不管有多少测试函数都只执行一次setu

意柠 717

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

pytest和allure

pytest简单概述 需要安装pytest和pytest-html(生成html测试报告) pip install pytest 和 pip install pytest-html 命名规则 Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头的类和方法,比unittest更加严谨 Pytest的setup, setup_class和teardown, teardown_class函数(和unittest执行效果一样) 运行于测试方法的始末,即:运行一次测试函数会运行

gougouboke的博客 417

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

pytest和unittest的共同点和区别

共同点: 1、都是测试框架,都是通过python代码来写测试用例/收集用例,运行用例,生成报告 区别: pytest: --能够运行unittest --灵活 unittest: --对着模板套 --写用例-TestCase --收集用例-TestLoader.discover() --生成报告-HtmlTestRunner ...

weixin_45754647的博客 439

pytest介绍

官网方文档https://docs.pytest.org/en/latest/contents.html pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: 简单灵活,容易上手 支持参数化 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests) pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-htm

liao_11的博客 2966

Pytest测试框架(二):pytest 的setup/teardown方法

PyTest支持xUnit style 结构, setup() 和 teardown() 方法用于初始化和清理测试环境,可以保证测试用例的独立性。pytest的setup/teardown方法包括:模块级别(setup_module/teardown_module)、函数级别(setup_function/teardown_function)、类级别(setup_class/ teardown_class)、方法级别(setup_method/teardown_methond或者setup/teardown

测试开发小记 1万+

pytest框架中setup、teardown和setup_class、teardown_class

函数级别方法: setup:每个用例执行之前都会执行一次 teardown:每个用例执行之后都会执行一次 import pytest class TestFunc: def setup(self): # 每个测试函数运行前执行一次 print("---setup---") def test_a(self): print("test_a") def test_b(self): print("test_b"

weixin_43489242的博客 7982
上一篇: 如何读懂JMeter聚合报告参数?
下一篇: Pytest框架 —— Fixture装饰器的使用(一)
测试界的吴彦祖
博客等级 码龄5年 7004粉丝 1521原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值