相信用过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 pytestdef 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:@classmethoddef setup_class(cls):print("setup_class")@classmethoddef 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
可见在类中,类级>方法级>用例级
