1、实现部分前置,conftest.py和fixture结合使用
1.1 conftest.py文件:
conftest.py文件是单独存放@pytest.fixture()的方法。用处是可以在多个py文件之间共享前置配置
conftest.py文件里面的方法在调用时不需要导入,可以直接使用
conftest.py可以有多个,也可以有多个不同层级
1.2 fixture装饰器
@pytest.fixture(scope=”function”) 作用域不写默认是函数级别,yield唤醒类似teardown功能,简单理解就是返回。
例如:
conftest.py中定义了一个连接数据库的方法conn_database(),引入了@pytest.fixture装饰器,作用域是函数级别,使用yield区分函数执行前操作和函数执行后操作
@pytest.fixture(scope="function")
def conn_database():
print("连接数据库")
yield
print("关闭数据库")
不用导包直接引用:
可以看到,在方法执行之前,先执行了conftest里的内容。除了在方法名后调用,也可以使用装饰器@pytest.mark.usefixtures("conn_database")调用,效果是一样的。
2、fixture相互调用(Fixture的相互调用要在测试方法里调用fixture才会生效)
3、pytest的5种全局前后置,pytest⽐unittest多了函数级和⽅法级
- 模块级(setup_module/teardown_module)所有用例执行前/后只执行一次(类外)
前置--用例1、用例2 --后置
- 函数级(setup_function/teardown_function)每个用例前/后执行(类外)
前置--用例1---后置 前置--用例2---后置
- 类级(setup_class/teardown_class)类中所有用例前/后只执行⼀次(类中)
前置-- 类里面的用例1、类里面的用例2--后置
- ⽅法级(setup_method/teardown_method)类中每个用例前/后执行(类中)
前置-- 类里面的用例1--后置 前置--类里面的用例2--后置
- setup/teardown 每条用例前/后执行(类中类外都可以执行)
4、@pytest.mark.parametrize(args_name,args_value)参数化,用于传递测试数据
args_name:参数名
args_value:参数值(使用list列表,tuple元组,字典列表,字典元组等),在数据中有多少个值,那么接口用例就会执行多少次
方法中传入参数名即可获得对应的参数值,例如: