一、setup/teardown/setup_calss/teardown_class
  为什么需要这些功能?
  比如:我们执行用例之前,需要做的哪些操作,我们用例执行之后,需要做哪些操作
# 在所有用例之前,只执行一次
def setup_class(self):
print('在每个类执行前的初始化的工作,比如:创建日志对象,连接数据库等') # 在所有用例之后,只执行一次
def teardown_class(self):
print('在每个类执行完成之后的扫尾动物,比如:销毁日志对象,断开数据库等') # 在每个用例之前,都执行一次
def setup(self):
print('在每个测试用例执行之前执行的代码')
# 在每个用例之后,都执行一次
def teardown(self):
print('在每个测试用例执行完成之后执行的代码')
"""
执行顺序与上下顺序无关
"""
二、@pytest.fixture()装饰器实现部分用例前后置介绍
格式
@pytest.fixture(scope='',params='',autouse='',ids='',name='')
def my_fixture():#自定义的前、后置方法,使用装饰器声明
print('这是前置方法')
yield '返回值,可有可无' # yield分隔,上面的代码是执行用例前执行,下面的代码用例执行完执行
# return 在返回结果后结束函数的运行,而yield 则是让函数变成一个生成器,生成器每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值
print('这是后置方法')
#参数
scope:表示被pytest.fixture标记的方法的作用域
function:函数,默认的
class:类作用域
module:模块 整个py文件
package/session:包作用域、会话作用域
params:参数化,有多少个值,就会执行多少次用例
autouse:True:自动执行,默认是FALSE
ids:当使用params参数化时,给每一个值设置一个变量名
name:表示是被@pytest.fixture标记的方法取一个别名
三、@pytest.fixture()装饰器使用示例
部分实现
@pytest.fixture(scope='function')
def my_fixture():
print('这是前置方法')
yield
print('这是后置方法') class TestRegister:
#在用例函数传参里面传入对应的方法,传入该方法的用例会有前后置操作
def test_register(self,my_fixture):
print('测试注册') def test_login(self):
print('测试登录')

全部自动执行

 #autouse默认是False,我们给指定场景传入,如果是True,不需要传入全部会调用,相当于setup、teardown效果
@pytest.fixture(autouse=True)
def my_fixture():
print('这是前置方法')
yield 'sussic'
print('这是后置方法')
params参数化
params支持列表、元组、字典列表(列表套字典)、字典元组(元组套字典)四种格式
@pytest.fixture(params=['test1','test2'])
def my_fixture(request): # 传入request
#可以使用request.param获取到params里面的参数 ,固定写法,不带s
#params里面有多少个值,用例就会执行多少次
ids
@pytest.fixture(params=['test1','test2'],ids=[a,b])

name

@pytest.fixture(name='new_name') #指定一个别名,使用该别命调用,原来的my_fixture不可再用
三、通过conftest.py和@pytest.fixture()结合实现全局的前后置应用
  • conftest.py文件是单独存放的一个夹具配置文件,名称不能更改
  • 可以在不同的py文件中使用同一个fixture函数
  • 在conftest.py里面编写好前后置方法,然后在其他文件的方法直接传入夹具方法名就可以,可以跨文件使用,不需要导入文件
  • 原则上conftest.py文件和用例文件同级,可以有多个conftest文件,也可以在项目根目录下,都可以实现全局调用
四、各自写法优先级按上到下
  • fixtrue 的session
  • fixture的class
  • setup_class
  • fixture的function
  • setup
五、pytest执行过程
  • 查询当前目录下的conftest.py文件
  • 查询当前目录下的pytest.ini文件
  • 查询用例目录下的conftest.py文件
  • 查询py文件中是否有setup/teardown/setup_calss/teardown_class
  • 再根据pytest.ini文件规则去查找执行l

2.pytest前后置(固件、夹具)处理的更多相关文章

  1. python自动化测试框架的unittest与pytest前后置条件的区别

    前言: 笔者先试有用过unittest的前后置条件和pytest的前后置条件,觉得pytest的前后置条件比unittest的要简洁.方便很多.不过在使用unittest的前后置条件时,已经觉得在和每 ...

  2. pytest(6)-Fixture(固件)

    什么是固件 Fixture 翻译成中文即是固件的意思.它其实就是一些函数,会在执行测试方法/测试函数之前(或之后)加载运行它们,常见的如接口用例在请求接口前数据库的初始连接,和请求之后关闭数据库的操作 ...

  3. pytest封神之路第四步 内置和自定义marker

    可以通过命令行查看所有marker,包括内置和自定义的 pytest --markers 内置marker 内置marker本文先讲usefixtures .filterwarnings .skip ...

  4. pytest使用总结笔记

    简介 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高.并且pytest兼容unittest的用例,支 ...

  5. Pytest自动化测试 - 简易教程

    简介 pytest是动态编程语言Python专用的测试框架,它具有易于上手.功能强大.可扩展性好.兼容性强.效率高.第三方插件丰富等特点. 功能特征: 完整的文档,包括安装,教程和PDF文档 简单而又 ...

  6. 如何使用Pytest进行自动化测试

    为什么需要自动化测试 自动化测试有很多优点,但这里有3个主要的点 可重用性:不需要总是编写新的脚本,除非必要,即使是新的操作系统版本也不需要编写脚本. 可靠性:人容易出错,机器不太可能.当运行不能跳过 ...

  7. Pytest单元测试框架之parametrize参数化

    1.参数化的本质:相同的步骤,但测试数据不同,比如登录的场景 import mathimport pytest# 方式一:分离出Listdef list_Test(): list = [ [2, 2, ...

  8. [翻译]pytest测试框架(一)

    此文已由作者吴琪惠授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 纯官网译文而已... pytest是一个成熟的.全功能的python测试工具. pytest框架编写测试用例 ...

  9. pytest 常见用法

    前言 之前一篇文章简单介绍了 pytest 以及 fixture :https://www.cnblogs.com/shenh/p/11572657.html .实际在写自动化测试脚本中,还会有一些很 ...

随机推荐

  1. Java源码分析 | Object

    本文基于 OracleJDK 11, HotSpot 虚拟机. Object 定义 Object 类是类层次结构的根.每个类都有 Object 类作为超类.所有对象,包括数组等,都实现了这个类的方法. ...

  2. 在微信小程序中,如何获取 for 循环的 index

    微信小程序中,for 循环的 index(索引值)可以用wx:for-index="index"来获取. <view class="item" wx:fo ...

  3. 如何使用.NET 6的IHostedService和BackgroundService?

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本章是<定制ASP NET 6.0框架系列文章>的第七篇.本文内容和定 ...

  4. windows绕过杀软添加账户密码

    windows绕过杀软添加账户密码 起因:system权限下存在杀软无法添加账户信息 绕过方法 1.C#脚本 运行后会在目标机器上创建一个用户为 wh4am1 密码为 qqai@love 的 Admi ...

  5. 「题解报告」CF1067A Array Without Local Maximums

    大佬们的题解都太深奥了,直接把转移方程放出来让其他大佬们感性理解,蒟蒻们很难理解,所以我就写了一篇让像我一样的蒟蒻能看懂的题解 原题传送门 动态规划三部曲:确定状态,转移方程,初始状态和答案. --神 ...

  6. HC32L110(三) HC32L110的GCC工具链和VSCode开发环境

    目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...

  7. KingbaseES例程之拥有大量索引的表导入数据

    概述 如何快速插入大量数据比如几千万上亿的带索引的数据表. 数据准备 准备一个拥有二十个索引的数据表. kingbase=# \d+ bigtab Table "kingbase.bigta ...

  8. 全局索引与分区索引对于SQL性能影响的比较

    KingbaseES 提供了对于分区表 global index 的支持.global index 不仅提供了对于唯一索引功能的改进(无需包含分区键),而且在性能上相比非global index (l ...

  9. 国内外各大物联网IoT平台鸟瞰和资源导航

    一.国内外物联网平台 国内 百度物接入IoT Hub 阿里云物联网套件 智能硬件开放平台 京东微联 机智云IoT物联网云服务平台及智能硬件自助开发平台 庆科云FogCloud Ablecloud物联网 ...

  10. 在Windows 2012 R2上安装vcenter 5.5

    在Windows 2012 R2上安装vCenter 5.5做个实验,发现安装的时候卡在Install Directory service了. 重启后,再装也一样. 上网查了一下,说是要装好ADLDS ...