pytest 框架实现一些前后置(固件,夹具)的处理,常用三种。

一、setup/teardown,setup_class/teardown_class

为什么需要这些功能
比如: web自动化执行用例之前, 需要打开浏览器, 执行之后需要关闭浏览器

import pytest# 所有的用例之前都会执行一次
def setup():print('\n在执行测试用例之前初始化的代码: 打开浏览器')# 在类中只会执行一次
def setup_class():print('\n在执行每个类之前的初始化工作')@pytest.mark.smoke
def test_html_001():print('这是一个html的测试函数')def test_html_002():print('这是一个html_002的测试函数')# 所有的用例执行之后执行一次
def teardown():print('\n在执行测试用例之后的扫尾的代码 关闭浏览器')# 最后的扫尾工作,只执行一次
def teardown_class():print('\n在每个类执行后的扫尾的工作: 比如销毁日志,销毁链接')

二、使用fixture装饰器来实现部分用例的前后置

装饰器
@pytest.fixture(scope=’’, name=’’, params=’’, autouse=’’, ids=’’)

  1. scope表示的是被@pytest.fixture标记的方法的作用域,默认为function, 还有class, module, package/session
  2. params: 参数化
  3. autouse: 自动使用,默认为false
  4. ids: 当使用params参数化的时候,给每一个值设置一个变量
  5. name: 给表示的是被@pytest.fixture标记的方法取一个别名(当取了别名之后, 那么原来的名称就不用了)

import pytest@pytest.fixture(scope='function', name='project', params=['成龙', '甄子丹', '李连杰'], autouse=True, ids=['cl', 'zzd', 'llj'])
def my_fixture_01(request):print('这是前后置的方法,可以实现部分以及全部用例的前后置')yield request.paramprint('只是后置的方法')class TestFixture:def test_fixture(self):print('这是一个test_fixture的测试函数')def test_fixture_001(project):print('这是一个test_fixture_001的测试函数  '+ str(my_fixture_01))

执行结果

src/html_web/test_fixture.py::TestFixture::test_fixture[cl] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法src/html_web/test_fixture.py::TestFixture::test_fixture[zzd] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法src/html_web/test_fixture.py::TestFixture::test_fixture[llj] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture的测试函数
PASSED只是后置的方法src/html_web/test_fixture.py::test_fixture_001[cl] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法src/html_web/test_fixture.py::test_fixture_001[zzd] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法src/html_web/test_fixture.py::test_fixture_001[llj] 这是前后置的方法,可以实现部分以及全部用例的前后置
这是一个test_fixture_001的测试函数  <function my_fixture_01 at 0x7fb1d92e9170>
PASSED只是后置的方法=============================================================== 6 passed, 9 deselected in 0.04s ===============================================================

三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用(比如:项目的全局登陆,模块的全局处理)

  1. conftest.py文件是单独存放的一个家具配置文件,名称是不能改的
  2. 用处可以在不同的py文件中使用fixture函数
  3. conftest.py为全局配置,原则上需要和运行的用例放在同一层,并且不做任何import倒入的操作

总结: setup/teardown setup_class/teardown_clss它是作用于所有的用例或者类
@pytest.fixture() 它的作用是既可以部分也可以全部前后置
conftest.py 和 @pytest.fixtrue()结合使用,作用于全局的前后置

四、pytest结合allure-pytest插件生成allure测试报告

  1. 下载,解压,配置path路径

    https:github.com/allure-framework/allure2/releases
    path路径配置
    验证: allure -version
    问题: dos可以验证但是pycharm验证失败,需重启pycharm

  2. 生成allure报告: os.system(‘allure generate ./temp -o ./report --clean’)
    1. allure generate 命令,固定写法
    2. ./temp 临时的json格式报告的路径
    3. -o 输出output
    4. ./report 生成的allure报告的路径
    5. –clean 清空./report 路径原来的报告

pytest第二版 进阶学习相关推荐

  1. 计算机视觉——一种现代方法(第二版)学习笔记

    计算机视觉--一种现代方法(第二版)学习笔记 第1章 摄像机的几何模型 如上左图所示,我们需要将一个空间点X映射到一个图像点x(3维->2维)上即 根据右上图我们很容易推到处下面的变换: 这个结 ...

  2. JavaScript DOM 编程艺术 (第二版)学习之5-6章

    JavaScript DOM 编程艺术 (第二版)学习之5-6章 第五章 最佳实践 5.1 过去的错误 5.2 平稳退化 5.2.1 "javascript:"伪协议 5.2.2 ...

  3. JavaScript DOM 编程艺术 (第二版)学习之3-4章

    JavaScript DOM 编程艺术 (第二版)学习之3-4章 第三章 DOM 3.1 文档:DOM中的"D" 3.2 对象:DOM中的"O" 3.3 模型: ...

  4. 《统计学习方法第二版》学习笔记2——感知机

    第2章 感知机 目录 第2章 感知机 前言 1 理论部分 1.1 感知机模型 1.2 感知机学习策略 1.3 感知机算法 1.3.1 原始形式算法 1.3.2 对偶形式算法 2 代码部分 2.1 Pe ...

  5. 《统计学习方法第二版》学习笔记1——概论

    第1章 统计学习及监督学习概率论 目录 第1章 统计学习及监督学习概率论 前言 1 理论部分 1.1 统计学习 1.2 统计学习的分类 1.3 统计学习方法三要素 1.4 模型评估与模型选择 1.5 ...

  6. 《深入理解Java虚拟机》(第二版)学习3:垃圾收集器

    垃圾收集器 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 我们这里讨论的收集器主要是基于JDK 1.7 Update 14之后的 Hotspot VM . Serial 收 ...

  7. 《深入理解Java虚拟机》(第二版)学习2:垃圾收集算法

    对象存活判断 在对堆进行回收之前虚拟机需要判断这些对象中那些是"存活"的. 引用计数算法(Reference Counting) 原理:给对象中添加一个引用计数器,每当有一个地方引 ...

  8. 《深入理解Java虚拟机》(第二版)学习1:JVM的内存划分

    运行时数据区 先来一张图描述一下 JVM 的内存划分 PS:自己画的,丑是难免丑了点- 程序计数器(Program Counter Register) 程序计数器(Program Counter Re ...

  9. 统计学习方法(第二版)-学习笔记

    第1章 统计学习及监督学习概率 统计学习是关于计算机基于数据构建概率统计建型并运用模型对数据进行预测与分析的一门学科.统计学习研究的对象是数据. 统计学习一般包括监督学习(从标注数据中学习预测模型的机 ...

最新文章

  1. [数位dp] spoj 10738 Ra-One Numbers
  2. redis的安装和pip连接
  3. 聊聊wiki和中华维客
  4. 11g内存管理新特性的internal表现
  5. 屏幕编程 F4的帮组用法
  6. [Swift]LeetCode1146. 快照数组 | Snapshot Array
  7. java对xml解析_Java中对xml的解析
  8. Qt4.7中 默认的构造函数
  9. CentOS系统是什么
  10. 在ubuntu上安装Avant Window Navigator (AWN)
  11. Fluent Design System 设计语言元素
  12. phpstrom自己定义和原本的常用快捷键
  13. 数据库--sql查询某一时间段数据
  14. linux系统安装word,如何在Linux中安装FreeOffice 2018
  15. Virtual Hosts
  16. BgSub 无需上传图片即可在线自动抠图的AI工具
  17. 造型简约的机箱,安装简单兼容性好,安钛克P20C体验
  18. 盘点8个国内外知名表单软件平台,你知道几个?
  19. 基于springboot的校园二手交易商城
  20. power BI 中x轴日期值显示英文改为数值形式

热门文章

  1. 统计和生成所有不同的二叉树
  2. DeepLab v2的摘要部分(翻译加理解)
  3. torchvision 笔记:ToTensor()
  4. 文巾解题 184. 部门工资最高的员工
  5. tableau可视化数据分析60讲(二十二)-tableau常见面试题目
  6. python实战系列之爬取CSDN博客之星2020年度排名情况(附源码)
  7. Flink从入门到精通100篇(十八)-CentOS环境中搭建Flink分布式集群
  8. idea console中文乱码_Python3的字符编码乱码问题解决思路
  9. 【LeetCode从零单排】No.135Candy(双向动态规划)
  10. 【LeetCode从零单排】No.8 String to Integer (丧心病狂的一道题)