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的异步算子的原理及使用