一、pytest前后置(夹具)-fixture
夹具的作用:在用例执行之前和之后,需要做的准备工作之前和收尾工作。
用于固定测试环境,以及清理回收资源。
举个例子:访问一个被测页面-登录页面,执行测试用例过程中,上来就输入账户、密码、验证码吗,实际上是先获取浏览器的驱动,有了驱动才去执行用例的执行,用例执行完后关闭页面。
夹具要做的事情就是在执行用例之前,把驱动获取到,用例执行完之后,页面需要关闭就放到固定的测试环境之后。
pytest内部提供了多种类型的夹具
1、已经定义好的夹具类型一共有以下几种类型:
- 函数
- 方法
- 类
- 模块
2、自定义夹具:fixture
使用fixture灵活调度固定的测试环境
1.1、fixture基本介绍
是pytest当中的一个装饰器
@pytest.fixture(夹具的作用域、参数化、自动使用)
@pytest.fixture(scope="function",autouse=True) def go_shop(): print("使用自动保持登录的id") # 代码段1 yield # 不需要返回任何的内容 print("登录成功之后的用户id") # 代码段2
每一个函数级别的用例,它都会在你用例执行之前执行代码段1,用例执行之后执行代码段2
1、自动调用夹具
2、不自动调用夹具
1.2、项目中的使用
fixture一般在项目中集中管理-封装成一个模块。
- 整个项目中会定义一个py模块:conftest.py专门用来放置自定义的fixture,文件名固定而且不能修改。
- 在使用fixture不需要进行导包,可以直接使用。不管是在项目根目录还是用例目录都会自动识别进行调用。
- 执行顺序:多个fixture-从最外边到最里边以及从最上边到最下边,定位fixture然后执行。有相同的名字的,根据ASCII编码进行筛选选中,然后进行一个集中使用。
也就是将定义fixture的那段代码放在conftest.py文件中即可。