• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ellaha
博客园    首页    新随笔    联系   管理    订阅  订阅
pytest框架: fixture之conftest.py

原文地址:https://blog.csdn.net/BearStarX/article/details/101000516

一、fixture优势
1、fixture相对于setup和teardown来说应该有以下几点优势:

  • 命名方式灵活,不局限于setup和teardown这几个命名
  • conftest.py配置 里可以实现数据共享,不需要import就能自动找到一些配置
  • scope="module"可以实现多个.py跨文件共享前置
  • scope="session"以实现多个.py跨文件使用一个session来完成多个用例

2、使用装饰器标记fixture的功能
fixture(scope="function",params=None,autouse=False,ids=None,name=None)

可以使用此装饰器(带或不带参数)来定义fixture功能。fixture功能的名称可以在以后使用,引用它会在运行测试之前调用它:

test模块或类可以使用pytest.mark.usefixtures(fixturename)标记
测试功能可以直接使用fixture名称作为输入参数,在这种情况下,夹具实例从fixture返回功能将被注入
二、fixture参数介绍
fixture(scope="function",params=None,autouse=False,ids=None,name=None)

1、scope

fixture作用范围:

fixture里面有个scope参数可以控制fixture的作用范围:session > module > class > function(默认)

  • function 每个函数或方法都会调用
  • class 每一个类调用一次,一个类可以有多个方法
  • module 每一个.py文件调用一次,该文件内又有多个function和class
  • session 多个文件调用一次,可以跨.py文件调用,每个.py文件就是module

2、params

一个可选的参数列表,它将导致多个参数调用fixture功能和所有测试使用它

3、autouse

如果为True,则为所有测试激活fixture func 可以看到它

如果为False(默认值),则显式需要参考来激活fixture

4、ids

每个字符串id的列表,每个字符串对应于params,这样他们就是测试ID的一部分,如果没有提供ID它们将从params自动生成

5、name

fixture的名称,这默认为装饰函数的名称。如果fixture在定义它的同一模块中使用,夹具的功能名称将被请求夹具的功能arg遮蔽;解决这个问题的一种方法是将装饰函数命名"fixture_<fixturename>",然后使用"@pytest.fixture(name='<fixturename>')"

备注:fixtures可以选择使用yield语句为测试函数提供它们的值,而不是return。在这种情况下,yield语句之后的代码块作为拆卸代码执行,而不管测试结果如何。fixture功能必须只产生一次

三、fixture参数传入(scope="function")
1、实现场景:用例1需要先登录,用例2不需要登录,用例3需要先登录


————————————————
版权声明:本文为CSDN博主「BearStarX」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BearStarX/article/details/101000516

posted on 2019-10-29 18:06  ellaha  阅读(300)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3