前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest的fixture功能

pytest的fixture功能

作者头像
用户5521279
发布2020-02-21 16:23:59
2K0
发布2020-02-21 16:23:59
举报
文章被收录于专栏:搜狗测试

今天记录一下最近学习pytest的过程中对fixture功能的总结,学习pytest就要好好的了解下它的精髓所在—fixture,就像了解unittest中的setup和teardown一样。接下来开始正题:

1. 什么是fixture

(1)fixture是在测试函数运行前后,由pytest执行的外壳函数;

(2)它的作用是将一些非核心测试逻辑从测试函数分离出来,以便于其他测试函数使用,同时保持这些边缘逻辑的一致性;

(3)fixture中的代码可以进行定制,满足多变的测试需求,包括:包括定义传入测试中的数据集,配置测试前系统的初始状态,为批量测试提供数据源等等...

总起来说,fixture是pytest用户将测试前后进行预备、清理工作的代码分离出核心测试逻辑的一种机制。

2. fixture定义

通过一个例子来看下fixture的定义:

@pytest.fixture() 装饰器用于声明函数是一个fixture。fixtureFunc 这个函数就是一个fixture,fixture函数内部可以实现一些初始化的操作。

运行结果:

3. fixture函数存放的位置

(1)如果你希望fixture函数的作用域仅限于某个测试文件,那么将它写在该测试文件中;

(2)如果希望fixture被多个测试文件共享,可以在公共目录下创建一个conftest.py文件,将fixture放在其中。

4. fixture执行和销毁的逻辑

下面通过 pytest --setup-show example1.py查看一下fixture的执行和销毁的逻辑:

从执行结果看到,测试函数被夹在中间,pytest将每一个fixture的执行分成SETUP和TEARDOWN两部分。

5. fixture传递测试数据

fixture非常适合存放测试数据,可以返回任何数据,尤其是针对接口测试的时候,需要传入很多组不同的测试数据的的情况。

6. fixture的作用范围

fixture包含一个叫scope(作用范围)的可选参数,用于控制fixture执行和销毁逻辑的频率。@pytest.fixture()的scope参数有4个值:function、class、module、session,默认为:function。

(1)scope='function'

函数级别的的fixture每个测试函数只需要运行一次。配置代码在测试用例运行之前运行,销毁代码在测试用例运行之后运行。

(2)scope='class'

类级别的fixture的每个测试类只需要运行一次,无论测试类中有多少类方法都可以共享这个fixture。

(3)scope='module'

模块级别的fixture每个模块只需要运行一次,无论模块里面有多少个测试函数、类方法或其他fixture都可以共享这个fixture。

(4)scope='session'

会话级别的fixture每次会话只需要运行一次,一次pytest会话中的所有测试函数、方法都可以共享这个fixture。

综上作用范围:session>module>class>function

这次就总结到这,下一次我们继续介绍fixture,

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档