fixture特点:
- 命令灵活:对于setup , teardown可以省略
 - 数据共享:在conftest.py配置里写方法可以实现数据共享 , 不需要import导入 , 可以跨文件共享
 - scope的层次及神奇的yield组合相当于各种setup和teardown
 - 实现参数化
 
- 场景:
 
setup和teardown无法满足这种情况,但是fixture可以 。默认scope(范围):function
- 步骤:
- 导入pytest
 - 在登录的函数上添加@pytest.fixture()
 - 在要使用的测试方法中传入(登录函数名称)
 - 不传入的就不登录,直接执行测试方法 。
 
 - 导入pytest
 
- session是在整个项目中只执行一次的代码
 
- 场景:
 
- 解决:
 
- 步骤:
 
在登录的方法中加yield,之后加销毁清除的步骤
import pytest@pytest.fixture()def login():# setuptoken = '1235236fdg'print("登录功能")yield token# 相当于return 返回none# teardownprint("退出登录操作")def test_search():print("搜索功能")def test_cart(login):print(f"token:{login}")print("购物车")数据共享- 场景:
 
- 解决:
 
- 前提:
- conftest文件名不能换
 - 放在项目下是全局的数据共享
 
 - conftest文件名不能换
 - 执行:
- 系统执行到参数login时先从本模块中查找是否有这个名字的变量之类的
 - 之后在conftest.py中找是否含有
 
 - 系统执行到参数login时先从本模块中查找是否有这个名字的变量之类的
 - 步骤:
 
自动应用
- 场景:
 
- 解决:
 
- 步骤:
 
参数化
- 场景:
 
- 解决:
 
- 步骤:
 
在方法参数写request,方法体里面使用request.param接受参数
@pytest.fixture(params=['hogwarts','joker'])def demo_params(request):print(f'用户名为:{request.param}')return request.paramdef test_demo(demo_params):print(f"数据为:{demo_params}")- 注意:fixture的参数是params,而调用的时候是request.param,没有s
 
- 模拟setup,teardown(一个用例可以引用多个fixture)
 - yield的用法
 - 作用域(session,module,类级别,方法级别)
 - 自动执行(autouse参数)
 - conftest.py用法,一般会把fixture写在conftest.py文件中
 - 实现参数化
 
- pytest.ini是pytest的配置文件
 - 可以修改pytest的默认行为
 - 不能使用中文符号 , 包括汉字,空格  , 引号,冒号等
 
- 修改用例的命名规则
 - 配置日志格式,比代码配置方便很多
 - 添加标签,防止运行过程报警告错误
 - 指定执行目录
 - 排除搜索目录
 
[pytest];执行check_开头的所有文件python_files = check_* test_*;执行所有的以Test和Check开头的类python_classes = Test* Check*;执行所有以test_和check_开头的方法python_functions = check_* test_*- 注意:win系统的pytest.ini文件不能写中文 , 注释也不行
 
推荐阅读
- 如何使用 pyqt 读取串口传输的图像
 - 数据科学学习手札144 使用管道操作符高效书写Python代码
 - 你们觉得华为手机卡不卡,使用体验如何(华为加装nm卡缺点)
 - 古墓丽影10怎么打飞机(古墓丽影10怎么使用榴弹)
 - JavaFx 使用字体图标记录
 - uni-app 如何优雅的使用权限认证并对本地文件上下起手
 - 手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea
 - spring boot使用swagger生成api接口文档
 - 壁挂炉怎么正确使用(壁挂炉怎么烧洗澡水)
 - Flink的异步算子的原理及使用
 
