02 pytest setup&teardown

视频地址

点我

内容概览

在这里插入图片描述

什么是前后置

在测试之前需要做一些准备工作(可以使用下边讲到的setup) 比如全局初始化数据库、准备测试数据,全局进行一个登录然后拿到登录凭证进行后续的请求,或者做ui自动化时需要初始化一个浏览器driver 进行后续的操作这些可以认为是前置

后置就是和上边对应的过程,在测试结束时我们需要做的比如清空测试中关闭数据库链接、关闭浏览器、退出登录等 可以使用teardown来完成这些操作

Pytest的setUp()和tearDown()

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

模块级(setup_module/teardown_module)开始于模块始末,全局的
函数级(setup_function/teardown_function)只对函数用例生效(对类中的测试方法不生效)
类级(setup_class/teardown_class)只在类中前后运行一次(只在类中生效)
方法级(setup_method/teardown_method)开始于方法始末(只在类中生效)
类里面的(setup/teardown)运行在调用方法的前后(个人认为是为了兼容unittest的写法 执行的时候会报warning 告诉你用setup_method/teardown_method代替)

详细介绍

模块级 setup_module/teardown_module

顾名思义在整个模块生效

什么是模块呢,在这里你可以理解为一个py文件就是一个模块

所以在一个测试文件中写了setup_module在所有用例开始前只执行一次/teardown_module 在所有用例结束后执行一次
话不多说看例子

"""验证setup teardown"""

def setup_module():
    print("在这个py文件最开始时只执行一次....")
    print("=======setup_module=========")


def teardown_module():
    print("在这个py文件最后只执行一次.....")
    print("=======teardown_module=========")


def test_02_case1():
    print("test_02_case1")


def test_02_case2():
    print("test_02_case2")


class TestSetUpTeardown(object):

    def test_02_setup_01(self):
        print("test_02_setup_01")
        print("执行的case1")

    def test_02_setup_02(self):
        print("test_02_setup_01")
        print("执行的case2")

执行结果

在这里插入图片描述

函数级(setup_function/teardown_function)

对当前文件的每个函数方式的case生效、 对以类的方式编写的case不生效

def setup_function():
    print("===========setup_function==========")
    print("每个测试方法都执行/对以类的方式编写的case不生效")

def teardown_function():
    print("===========teardown_function==========")
    print("每个测试方法都执行/对以类的方式编写的case不生效")

def test_02_case1():
    print("test_02_case1")

def test_02_case2():
    print("test_02_case2")

class TestSetUpTeardown(object):

    def test_02_setup_01(self):
        print("test_class_02_setup_01")
        print("执行的case1")

    def test_02_setup_02(self):
        print("test_class_setup_02")
        print("执行的case2")

执行结果
在这里插入图片描述

类级(setup_class/teardown_class)

写在类中,只对当前的测试类进行生效 setup_class在执行case前只执行一次、teardown_class在执行完当前类的所有case后执行一次


class TestSetUpTeardown(object):
    def setup_class(self):
        print()
        print("在这个类中执行一次.....")
        print("setup_class================")

    def test_02_setup_01(self):
        print("test_02_setup_01")
        print("执行的case1")

    def test_02_setup_02(self):
        print("test_02_setup_01")
        print("执行的case2")

    def teardown_class(self):
        print()
        print("在这个类中执行一次.....")
        print("teardown_class================")

在这里插入图片描述

方法级(setup_method/teardown_method)


class TestSetUpTeardown(object):
    def setup_method(self):
        print()
        print("在这个类中每个case执行一次.....")
        print("setup_class================")

    def test_02_setup_01(self):
        print("test_02_setup_01")
        print("执行的case1")

    def test_02_setup_02(self):
        print("test_02_setup_01")
        print("执行的case2")

    def teardown_method(self):
        print()
        print("在这个类中每个case执行一次.....")
        print("teardown_method================")

在这里插入图片描述

总结


def setup_module():
    print("在这个py文件最开始时只执行一次....")
    print("=======setup_module=========")


def teardown_module():
    print("在这个py文件最后只执行一次.....")
    print("=======teardown_module=========")


def setup_function():
    print()
    print("每个测试方法都执行")

def test_02_case1():
    print("test_02_case1")


def test_02_case2():
    print("test_02_case2")


class TestSetUpTeardown(object):
    def setup_class(self):
        print()
        print("在这个类中执行一次.....")
        print("setup_class=============")

    def setup_method(self):
        print()
        print("在这个类中的每个case前都执行")
        print("setup_method===========")

    def test_02_setup_01(self):
        print("test_02_setup_01")
        print("执行的case1")

    def test_02_setup_02(self):
        print("test_02_setup_01")
        print("执行的case2")

    def teardown_method(self):
        print()
        print("在个类中的每个case后都执行")
        print("teardown_method===========")

    def teardown_class(self):
        print()
        print("在这个类中执行一次.....")
        print("teardown_class=============")

在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值