pytest之前置、后置方法(二)

pytest之前置、后置方法(二)

1、简介

本文将介绍pytest的前置、后置方法,分别为setup、teardown,在介绍之前先回忆下我们之前学过的unittest框架,它提供了两个前置和两个后置方法,分别为:

  • setup()
  • setupClass()
  • teardown()
  • teardownClass()

由unittest提供的方法可以看出,只支持方法和类级别的前置和后置,而今天我们要学习的pytest支持的更多,下面让我们一起来学习下吧。

2、pytest前后置方法

pytest前后置方法分为多个级别:

  • 模块级别:setup_module()、teardown_module()
  • 类级别:setup_class()、teardown_class()
  • 方法级别:setup_method()、teardown_method()
  • 方法细化级别:setup()、teardown()
  • 函数级别:setup_function()、teardown_function()

下面我们写代码测试下它们的运行顺序:

# -*- coding: utf-8 -*-
# @Time    : 2023/11/21 14:55
# @Author  : 梗小旭
# @File    : test_login.py

import pytest


def setup_module():
    print("我是setup_module。。。")

def teardown_module():
    print("我是teardown_module。。。")

def setup_function():
    print("我是setup_function。。。")

def teardown_function():
    print("我是teardown_function。。。")

def test_login_success():
    print("登录成功。。。")

def test_login_fail():
    print("登录失败。。。。")


class TestLogin:
    def setup_class(self):
        print("我是setup_class。。。")

    def teardown_class(self):
        print("我是teardown_class。。。")

    def setup_method(self):
        print("我是setup_method。。。")

    def teardown_method(self):
        print("我是teardown_method。。。")

    def setup(self):
        print("我是setup。。。")

    def teardown(self):
        print("我是teardown。。。")

    def test_login_class_success(self):
        print("类-登录成功。。。")

    def test_login_class_fail(self):
        print("类-登录失败。。。")

if __name__ == '__main__':
    pytest.main(["-s", "-q", "test_login.py"])

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

通过执行我们发现setup和teardown并没有执行,带着疑问,去找了资料发现pytest7.0.0版本之后,和setup_method/teardown_method一起使用时,只会执行setup_method/teardown_method,而不会执行setup/teardown,而我的版本是7.4.3,把版本降到7.0.0以下后就可以正常执行了,先执行setup_method/teardown_method,后执行setup/teardown。
在这里插入图片描述
所以pytest的前后置运行顺序是:
setup_module->setup_function->test_login_success->teardown_function->setup_function->test_login_fail>teardown_function->setup_class->setup_method->setup->test_login_class_success->teardown->teardown_method->setup_method->setup->test_login_class_fail->teardown->teardown_method->teardown_class->teardown_module

总结:

  1. setup_module/teardown_module模块级别是整个py文件用例运行前和运行后执行一次
  2. setup_class/teardown_class类级别是整个测试类运行前和运行后执行一次
  3. setup_method/teardown_method是类中的每个测试用例运行前和运行后都调用一次
  4. setup/teardown是类中的每个测试用例运行前和运行后都调用一次(前提pytest7.0.0版本以下)
  5. setup_function/teardown_function是每个函数用例执行前和之前后都调用一次

下一章介绍如何使用fixture设置前后置条件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值