相信用过robotframework或者python内置的单元测试框架unittest,应该就对setup和teardown不陌生了吧,一般他们的使用场景是什么呢?
setup:一般用于执行用例前的准备工作,就像你要跟你女朋友求婚,你总不能空着手就去求吧
teardown:一般用于执行完用例的”清洗”工作,例如求完婚,现场总要有人收拾吧!
在pytest中,有模块级别的、类级的、方法级的、函数级的
模块级(setup_module\teardown_module):对模块开始、结束生效
类级(setup_class\teardown_class):对类中开始、结束生效
方法级(setup_method\teardown_method):对类中方法的开始、结束生效
函数级(setup_function\teardown_function):对函数开始、结束生效,注意不在类中!
实例一:函数型
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 setup():
print("setup")
def teardown():
print("teardown")
def test_one():
print("test_one")
——————————————————————————————————————————————————————————
test_setup_and_teardowm.py
#setup_module
#setup_function
#setup
#test_one
#.teardown
#teardown_function
#teardown_module
上文代码可见:module级别>function级别>用例级别(setup)
实例二:类+方法型
class Testtwo:
@classmethod
def setup_class(cls):
print("setup_class")
@classmethod
def teardown_class(cls):
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_two(self):
print("test_two")
---------------------------------
test_setup_and_teardowm.py
#setup_class
#setup_method
#setup
#test_two
#.teardown
#teardown_method
#teardown_class
可见在类中,类级>方法级>用例级