文章目录

  • Fixture装置
    • 前言
    • fixture用途
    • fixture优势
    • fixture语法
    • fixture定义
    • fixture调用
    • fixture作为函数的入参调用
    • 使用 @pytest.mark.usefixtures('fixture名称') 装饰器调用
    • 使用autouse参数自动调用
    • fixture三种调用方式的区别
    • fixture作用范围
    • function(函数)级别
    • class (类)级别
    • module (模块)级别
    • session (会话)级别
    • 混合使用
    • fixture高阶用法:关键字yield
      • yield实现teardown
      • yield遇到异常

Fixture装置

前言

传统的前后置处理方法,对处理前后置的场景是有一定的局限性。所以才引入fixture装饰器函数,fixture是pytest的核心功能,也是亮点功能,它可以灵活的处理很多特殊的场景

fixture用途

  • 用于执行测试前后的初始化操作,比如打开浏览器、准备测试数据、清除之前的测试数据等等
  • 用于测试用例的前置条件,比如UI自动化的登录操作,读取config参数等
  • 用于测试用例之间的参数和数据传递

fixture优势

firture相对于unittest中的setup和teardown来说应该有以下几点优势

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

fixture语法

fixture(callable_or_scope=None, *args, scope="function", params=None, autouse=False, ids=None, name=None)
  • scope:fixture的作用域,默认为function
  • autouse:默认为False,表示需要用例手动调用该fixture;当为True时,表示所有作用域内的测试用例都会自动调用该fixture
  • name:装饰器的名称,同一模块的fixture相互调用建议使用不同的name

fixture定义

fixture通过@pytest.fixture()装饰器装饰一个函数,这个函数就是一个fixture,实例如下:

# test_fixture.py
import pytest@pytest.fixture()
def fixtureDemo():return "一个fixture"def test_fixture(fixtureDemo):print("测试用例执行时调用了{}".format(fixtureDemo))if __name__ == "__main__":pytest.main(['-v', 'test_fixture.py'])

执行结果如下:

fixture调用

调用fixture有三种方式

  • fixture名字作为用例函数的参数
  • 使用@pytest.mark.usefixtures(‘fixture名称’)装饰器
  • 定义fixture时使用autouse参数

fixture作为函数的入参调用

将fixture函数名作为参数传入测试用例,如果fixture有返回值,那么测试用例将会接收返回值,举个

Pytest学习笔记(4)-Fixture装置相关推荐

  1. pytest学习笔记

    目录 1.虚拟环境准备 2.安装pytest 3.pytest使用约束 4.执行方式 5.pytest常用运行参数介绍 6.解决大批量执行测试case问题多进程 7.失败重跑机制(以下两种均可) 8. ...

  2. Pytest学习笔记4——测试步骤

    引言 大家都知道功能测试用例组成的基本要素:用例ID,模块名,测试用例名称,前置条件,测试步骤,预期结果,实际结果等等.前置条件以及测试参数化,前面已经讲过,现在简单讲一下pytest测试步骤的用法. ...

  3. Pytest学习笔记(3)-Setup和Teardown

    文章目录 setup和teardown 前言 module(模块)级别 function(函数)级别 class(类)级别 method(方法)级别 混合使用 总结 setup和teardown 前言 ...

  4. Pytest学习笔记(15)-allure之@allure.epic()、@allure.feature()和@allure.story()

    文章目录 @allure.epic().@allure.feature()和@allure.story() BDD风格的标签 源码 官方代码例子 执行结果 小结一下 拓展:命令行方式 举个

  5. opencv进阶学习笔记2:numpy操作图像,色彩空间,查找指定颜色范围,通道分离与合并

    基础部分传送门 python3+opencv学习笔记汇总目录(适合基础入门学习) 进阶版笔记目录: python+opencv进阶版学习笔记目录(适合有一定基础) Numpy操作图像 1.遍历图像每一 ...

  6. b 计数器位选信号 verilog_Verilog HDL菜鸟学习笔记———三、Verilog常用语法之一...

    1.一个完整版实例 上一次Verilog学习笔记中,我通过几个小例子,较为直观的对Verilog编程有了一些了解.这次笔记,我开始着重的系统学习Verilog编程语法基础.在我系统学习语法之前,我先用 ...

  7. Spring Boot 2 学习笔记(2 / 2)

    Spring Boot 2 学习笔记(1 / 2) - - - 45.web实验-抽取公共页面 46.web实验-遍历数据与页面bug修改 47.视图解析-[源码分析]-视图解析器与视图 48.拦截器 ...

  8. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)

    菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...

  9. 深度学习笔记——循环神经网络RNN/LSTM

    原文来自知乎专栏NLP进阶之路,作者韦伟. 以下文章是摘录了原文部分内容的学习笔记,侵删. 循环神经网络(Rerrent Neural Network) RNN是神经网络的一种,RNN对具有序列特性的 ...

最新文章

  1. 扫个地用得到5TOPS算力?自动驾驶芯片公司这样说
  2. spring--(4)级联属性赋值
  3. 北航成教计算机课程,成教生:从问题学生到北航计算机本科生
  4. 转:HTTP协议简介与在python中的使用详解
  5. 社区 正式发布了跨平台的 CoreWCF 0.2.0
  6. 金笛邮件之邮件倒入专题
  7. WSL : llvm、clang 和XTP
  8. OpenXml 之 Excel 复制插入行
  9. Excel中判断内容是否重复-条件格式或IF+COUNTIF函数
  10. 第十四周练兵区——编程题——不计入总分
  11. 小程序 (基础认识)
  12. 金融业务-美港股和A股的区别
  13. python里的log怎么表示_python中的对数log函数表示及用法
  14. 西门子200smart模拟量滤波防抖PLC程序,能实现电流电压和热电阻模拟量信号的采集
  15. 传感器检测技术——传感器的静态特性
  16. Android3d结构光,一文看懂OPPO Find X 3D结构光技术有多牛
  17. G - 相遇周期 HDU - 1713
  18. 在线原型设计工具推荐
  19. OBS Studio导播台多画面使用实测
  20. 无线投影协作服务器,USB无线投影协作系统使用详解

热门文章

  1. No known class method for selector 'setImage:andName:'错误分析.//删除.h与.m文件时的注意事项...
  2. 为什么做跨境电商的企业要马上开始重视TikTok强大的流量?
  3. 请查收,会员积分商城系统外包运营攻略!
  4. BladeCenter S SAS Raid Module配置指南
  5. 标准化原生 Java:拉近 GraalVM 和 OpenJDK 的距离
  6. 【华为机试真题 Python实现】合法的三角形个数
  7. c++代码轻松实现贪吃蛇小游戏
  8. 2020年中国汽车用品行业发展现状分析,汽车保有量不断增加,行业发展空间广阔「图」
  9. Excel-统计元素出现次数和统计不重复元素的个数
  10. 学习笔记之——基于matlab的数字通信系统(2)之离散信号的傅里叶分析