写点什么

软件测试学习笔记丨 Pytest–Fixture 特点及优势

作者:测试人
  • 2024-03-20
    北京
  • 本文字数:1027 字

    阅读完需:约 3 分钟

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/30137

Fixture 特点及优势

  • 命令灵活:对于 setup,teardown,可以不起这两个名字

  • 数据共享:在 conftest.py 配置里写方法可以实现数据共享,不需要 import 导入。可以跨文件共享

  • scope 的层次及神奇的 yield 组合相当于各种 setup 和 teardown

  • 实现参数化

Fixture 在自动化中的基本用法

  • 场景

1、测试用例执行时,有的用例需要登陆才能执行,有些用例不需要登陆。

2、setup 和 teardown 无法满足的场景,fixture 可以,默认 scope(范围)function

  • 步骤

1、导入 pytest

2、在登陆的函数上面加 @pytest.fixture()

3、在要使用的测试方法中传入(登陆函数名称),就先登陆

4、不传入的就不登陆直接执行测试方法

Fixture 在自动化中的应用-作用域


Fixture 在自动化中的应用-yield 关键字

  • 场景

你已经可以将测试方法[前要执行的或依赖的]解决了

  • 解决

通过在 fixture 函数中加入 yield 关键字,yield 是调用第一次返回结果,第二次执行它下面的语句返回

  • 步骤

在 @pytest.fixture(scope = module)在登陆的方法中加 yield,之后加销毁清除的步骤

Fixture 在自动化中的应用-数据共享

  • 场景

与其他测试工程师合作一起开发时,公共的模块要在不同文件中,要在大家都能访问到的地方

  • 解决

使用 conftest.py 这个文件进行数据共享,并且他可以放在不同位置起者不同的范围共享作用

  • 前提

1、conftest 文件名是不能换的

2、放在项目下是全局的数据共享的地方

  • 执行

1、系统执行到参数 login 时,先从本模块中查找是否有这个名字的变量

2、之后再在 conftest.py 中找是否有这个名字的变量

  • 步骤

将登陆模块带 @pytest.fixture 写在 conftest.py 文件中

Fixture 在自动化中的应用-自动应用

  • 场景

1、不想原测试方法有任何改动,或者全部都自动实现自动应用

2、没特例,也都不需要返回值时可以选择自动应用

  • 解决

使用 fixture 中参数 autouse=True 实现

  • 步骤:

在方法上面加 @pytest.fixture(autouse=True)

Fixture 在自动化中的应用-参数化

  • 场景

测试离不开数据,为了数据灵活,一般数据都是通过参数传的

  • 解决

fixture 通过固定参数 request 传递

  • 步骤

1、在 fixture 中增加 @pytest.fixture(params=[1,2,3,‘linda’])

2、在方法参数写 request,方法体里面使用 request.param 接收参数

Fixture 的用法总结

  • 模拟 setup,teardown(一个用例可以引用多个 fixture)

  • yield 的用法

  • 作用域(session,module,类级别,方法级别)

  • 自动执行(autouse 参数)

  • conftest.py 用法,一般会把 fixture 写在 conftest.py 文件中(这个文件名字是固定的,不能改)

  • 实现参数化

免费领取:测试资料+测试用例+简历模板+测试文档


发布于: 1 小时前阅读数: 5
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试学习笔记丨Pytest–Fixture特点及优势_软件测试_测试人_InfoQ写作社区