一、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. 聊天机器人框架Rasa资源整理

      Rasa是一个主流的构建对话机器人的开源框架,它的优点是几乎覆盖了对话系统的所有功能,并且每个模块都有很好的可扩展性.参考文献收集了一些Rasa相关的开源项目和优质文章. 一.Rasa介绍 1.R ...

  2. [CF1538E] Funny Substrings (模拟)

    题面 该场 Div. 3 最"难"的一道题:Funny Substrings O I D \tt OID OID 队长喜欢玩字符串,因为 " O n e I n D a ...

  3. identity4 系列————纯js客户端案例篇[四]

    前言 前面已经解释了两个案例了,通信原理其实已经很清楚了,那么纯js客户端是怎么处理的呢? 正文 直接贴例子哈. https://github.com/IdentityServer/IdentityS ...

  4. html页面中插入html的标签,JS控制标签属性

    html页面中插入html的标签 方法1: 使用标签: <textara> </textara>标签 方法2: 使用JS: document.getElementById(&q ...

  5. 【HTML】学习路径2-设置文档类型、网页编码、文件注释

    第一章:设置文档类型 我们通常在html文件最前面写一行: <!DOCTYPE html> 这玩意有啥用? https://developer.mozilla.org/zh-CN/docs ...

  6. 第八十三篇:Vue购物车(四) 总价计算

    好家伙, 1.总价计算 来了,又先是一波分析: 我们用一个计算属性amt 我们把item中被勾选的项用一个过滤器过滤器来 然后用一个循环相加,把商品的价格乘以商品的数量, 把这个总值返回出去, 然后组 ...

  7. 通过ftutilx 插件实现流版式文件全文检索

    Oracle 支持流版式文件的全文检索,而原生的PostgreSQL是不支持流版式文件全文检索的.KingbaseES 通过ftutilx 插件将流版式文件转换成文本文件,从而支持流版式文件全文检索. ...

  8. KingbaseES 数据库Windows环境下注册数据库服务

    关键字: KingbaseES.Java.Register.服务注册 一.安装前准备 1.1 软件环境要求 金仓数据库管理系统KingbaseES V8.0支持微软Windows 7.Windows ...

  9. jmeter性能测试之正则提取响应头或者响应体

    准备工作做好,先发送请求 然后察看结果树中的响应消息 比如我们要提取这个cookie,先调试一下,看能不能提取到 看蓝色的线条,我们提取到了,然后我们把这句话写入到后置处理器中的正则表达式提取里 再次 ...

  10. jumpserver堡垒机版本升级,从2.14.2升级到2.16.3

    官方文档:https://docs.jumpserver.org/zh/master/install/upgrade/upgrade/ 前提说明 1.堡垒机是单节点 2.使用外置MySQL和Redis ...