pytest里面的setup和teardown有以下几种:

  • 模块级(setup_module)开始于模块
import pytest
# 模块中的方法
def setup_module():
    print(
        "setup_module:整个test_module.py模块只执行一次"
    )
def teardown_module():
    print "teardown_module:在模块之后执行"

# 测试模块中的用例1
def test_one():
    print("正在执行测试模块----test_one")
# 测试模块中的用例2
def test_two():
    print("正在执行测试模块----test_two")

运行结果:

setup_module--》 test_one--》teardown_module
setup_module--》 test_two--》teardown_module
  • 函数级(setup_function) 只对函数用例生效(不在类中)
#test_Pytest.py文件
#coding=utf-8

import pytest

def setup_function():
        print("setup_function方法执行")

def teardown_function():
    print ("teardown_function方法执行")

def test_one():
        print("test_one方法执行")
        assert 1==1

def test_two():
        print("test_two方法执行")
        assert "o" in "love"


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

运行结果

setup_function--》 test_one --》teardown_function
setup_function--》 test_two --》teardown_function
  • 类级(setup_class) 只在类中前运行一次(在类中)
import pytest
class TestClass:
 
    def setup_class(self):                    # 仅类开始之前执行一次
        print("---setup_class---")

    def teardown_class(self):
        print ("---teardown_class---")

    def test_one(self):
        print("test_a")
 
    def test_two(self):
        print("test_b")
 
if __name__ == "__main__":
    pytest.main(["-s","pytest_class.py"])

运行结果:

setup_class--》 test_one--》 test_two--》teardown_class
  • 方法级(setup_method)开始于方法(在类中)
# coding:utf-8
import pytest

class Test():

    def setup_method(self):
        print('setup_method')
    
   def teardown_method(self):
        print ('teardown_method')

    def test_one(self):
        print('test_one')

    def test_two(self):
        print(' test_two')


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

运行结果

setup_method--》 test_one--》teardown_method
setup_method--》 test_two--》teardown_method

如果喜欢我的文章,可以关注我~也可以留言,我将为大家分享正确的干货知识