一、setup/teardown/setup_calss/teardown_class
为什么需要这些功能?
比如:我们执行用例之前,需要做的哪些操作,我们用例执行之后,需要做哪些操作
# 在所有用例之前,只执行一次
def setup_class(self):
print('在每个类执行前的初始化的工作,比如:创建日志对象,连接数据库等')
def teardown_class(self):
print('在每个类执行完成之后的扫尾动物,比如:销毁日志对象,断开数据库等')
def setup(self):
print('在每个测试用例执行之前执行的代码')
def teardown(self):
print('在每个测试用例执行完成之后执行的代码')
"""
执行顺序与上下顺序无关
"""
二、@pytest.fixture()装饰器实现部分用例前后置介绍
格式
@pytest.fixture(scope='',params='',autouse='',ids='',name='')
def my_fixture():#自定义的前、后置方法,使用装饰器声明
print('这是前置方法')
yield '返回值,可有可无' # yield分隔,上面的代码是执行用例前执行,下面的代码用例执行完执行
# return 在返回结果后结束函数的运行,而yield 则是让函数变成一个生成器,生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值
print('这是后置方法')
#参数
scope:表示被pytest.fixture标记的方法的作用域
function:函数,默认的
class:类作用域
module:模块 整个py文件
package/session:包作用域、会话作用域
params:参数化,有多少个值,就会执行多少次用例
autouse:True:自动执行,默认是FALSE
ids:当使用params参数化时,给每一个值设置一个变量名
name:表示是被@pytest.fixture标记的方法取一个别名
三、@pytest.fixture()装饰器使用示例
部分实现
@pytest.fixture(scope='function')
def my_fixture():
print('这是前置方法')
yield
print('这是后置方法')
class TestRegister:
#在用例函数传参里面传入对应的方法,传入该方法的用例会有前后置操作
def test_register(self,my_fixture):
print('测试注册')
def test_login(self):
print('测试登录')
全部自动执行
#autouse默认是False,我们给指定场景传入,如果是True,不需要传入全部会调用,相当于setup、teardown效果
@pytest.fixture(autouse=True)
def my_fixture():
print('这是前置方法')
yield 'sussic'
print('这是后置方法')
params参数化
params支持列表、元组、字典列表(列表套字典)、字典元组(元组套字典)四种格式
@pytest.fixture(params=['test1','test2'])
def my_fixture(request): # 传入request
#可以使用request.param获取到params里面的参数 ,固定写法,不带s
#params里面有多少个值,用例就会执行多少次
ids
@pytest.fixture(params=['test1','test2'],ids=[a,b])
name
@pytest.fixture(name='new_name') #指定一个别名,使用该别命调用,原来的my_fixture不可再用
三、通过conftest.py和@pytest.fixture()结合实现全局的前后置应用
四、各自写法优先级按上到下
五、pytest执行过程
手机扫一扫
移动阅读更方便
你可能感兴趣的文章