关于pytest不再支持setup和teardown写法的讲解
关于 pytest 前后置关键字不再支持 setup,teardown,而是变为 setup_method 和 teardown_method 的讲解
版本更迭,规则变动
在 pytest 早期的版本里是支持直接使用setup
和teardown
来完成对于测试用例的前后置处理的,这是因为当时基于人们对于 unittest 的使用习惯,所以 pytest 支持了这样的写法。
但是长期维护这个写法,效率太低,所以在数次版本更新后,pytest 就不再支持单纯的setup
和teardown
的写法。
而是提供了一套更为完备的前后置关键词:
模块级别(setup_module/teardown_module)、
函数级别(setup_function/teardown_function)、
类级别(setup_class/ teardown_class)、
方法级别(setup_method/teardown_methond或者setup/teardown)
装饰器的使用
pytest 除了使用 setup_xxx 来完成前后置操作,还可以使用装饰器 fixture:@pytest.fixture(scope="class")
来配置前后置动作函数,然后在测试方法中使用。
@pytest.fixture(scope="class")
def pre_do_someting():
进行功能方法的初始化操作或创建driver实例对象
yield driver #关键字yield在返回变量回调用fixture装饰器的方法后,并不会结束当前装饰器,而是会在所以使用这个装饰器的方法结束后,继续往下执行
print('装饰器至此,执行结束')
driver.quit()#执行一些资源回收操作
#调用装饰器
def test_case(pre_do_someting):
driver = pre_do_someting
driver.get('xxxx')