Skip to content

关于pytest不再支持setup和teardown写法的讲解

关于 pytest 前后置关键字不再支持 setup,teardown,而是变为 setup_method 和 teardown_method 的讲解

版本更迭,规则变动

在 pytest 早期的版本里是支持直接使用setupteardown来完成对于测试用例的前后置处理的,这是因为当时基于人们对于 unittest 的使用习惯,所以 pytest 支持了这样的写法。

但是长期维护这个写法,效率太低,所以在数次版本更新后,pytest 就不再支持单纯的setupteardown的写法。

而是提供了一套更为完备的前后置关键词:

模块级别(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')

原文链接